MODULE_DESCRIPTION("GSPCA/Kinect Sensor Device USB Camera Driver");
MODULE_LICENSE("GPL");
+#ifdef DEBUG
+int gspca_debug = D_ERR | D_PROBE | D_CONF | D_STREAM | D_FRAM | D_PACK |
+ D_USBI | D_USBO | D_V4L2;
+#endif
+
struct pkt_hdr {
uint8_t magic[2];
uint8_t pad;
uint16_t tag;
} cam_hdr;
-int gspca_debug = D_ERR | D_PROBE | D_CONF | D_STREAM | D_FRAM | D_PACK |
- D_USBI | D_USBO | D_V4L2;
-
/* specific webcam descriptor */
struct sd {
- struct gspca_dev gspca_dev; /* !! must be the first item */
- uint16_t cam_tag;
+ struct gspca_dev gspca_dev; /* !! must be the first item */
+ uint16_t cam_tag; /* a sequence number for packets */
+ uint8_t stream_flag; /* to identify different steram types */
};
/* V4L2 controls supported by the driver */
memcpy(obuf+sizeof(*chdr), cmdbuf, cmd_len);
res = kinect_write(udev, obuf, cmd_len + sizeof(*chdr));
- info("Control cmd=%04x tag=%04x len=%04x: %d", cmd, sd->cam_tag, cmd_len, res);
+ PDEBUG(D_USBO, "Control cmd=%04x tag=%04x len=%04x: %d", cmd, sd->cam_tag, cmd_len, res);
if (res < 0) {
err("send_cmd: Output control transfer failed (%d)", res);
return res;
do {
actual_len = kinect_read(udev, ibuf, 0x200);
} while (actual_len == 0);
- info("Control reply: %d", res);
+ PDEBUG(D_USBO, "Control reply: %d", res);
if (actual_len < sizeof(*rhdr)) {
err("send_cmd: Input control transfer failed (%d)", res);
return res;
sd->cam_tag = 0;
+ /* Only color camera is supported for now,
+ * which has stream flag = 0x80 */
+ sd->stream_flag = 0x80;
+
cam = &gspca_dev->cam;
cam->cam_mode = video_camera_mode;
static void sd_pkt_scan(struct gspca_dev *gspca_dev, u8 *__data, int len)
{
- //struct sd *sd = (struct sd *) gspca_dev;
+ struct sd *sd = (struct sd *) gspca_dev;
struct pkt_hdr *hdr = (void*)__data;
uint8_t *data = __data + sizeof(*hdr);
int datalen = len - sizeof(*hdr);
- /* strm->flag == 0x80 for the color camera stream */
- uint8_t sof = 0x80 | 1;
- uint8_t mof = 0x80 | 2;
- uint8_t eof = 0x80 | 5;
+ uint8_t sof = sd->stream_flag | 1;
+ uint8_t mof = sd->stream_flag | 2;
+ uint8_t eof = sd->stream_flag | 5;
if (len < 12)
return;
if (hdr->magic[0] != 'R' || hdr->magic[1] != 'B') {
- warn("[Stream %02x] Invalid magic %02x%02x", 0x80, //strm->flag
+ warn("[Stream %02x] Invalid magic %02x%02x", sd->stream_flag,
hdr->magic[0], hdr->magic[1]);
return;
}