For now only video stream is supported which has stream_flag = 0x80, but
having the value hardcoded in the sd_pkt_scan routine didn't look
pretty.
This way there is more flexibility in preparation for adding depth
stream support.
Signed-off-by: Antonio Ospite <ospite@studenti.unina.it>
/* specific webcam descriptor */
struct sd {
/* 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 */
};
/* V4L2 controls supported by the driver */
+ /* 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;
cam = &gspca_dev->cam;
cam->cam_mode = video_camera_mode;
static void sd_pkt_scan(struct gspca_dev *gspca_dev, u8 *__data, int len)
{
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);
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') {
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;
}
hdr->magic[0], hdr->magic[1]);
return;
}