}
++line6->line6midi->num_active_send_urbs;
-
- switch (line6->usbdev->descriptor.idProduct) {
- case LINE6_DEVID_BASSPODXT:
- case LINE6_DEVID_BASSPODXTLIVE:
- case LINE6_DEVID_BASSPODXTPRO:
- case LINE6_DEVID_PODXT:
- case LINE6_DEVID_PODXTLIVE:
- case LINE6_DEVID_PODXTPRO:
- case LINE6_DEVID_POCKETPOD:
- line6_pod_midi_postprocess((struct usb_line6_pod *)line6, data,
- length);
- break;
-
- case LINE6_DEVID_VARIAX:
- case LINE6_DEVID_PODHD300:
- case LINE6_DEVID_PODHD500:
- break;
-
- default:
- MISSING_CASE;
- }
-
return 0;
}
}
}
-/*
- Detect some cases that require a channel dump after sending a command to the
- device. Important notes:
- *) The actual dump request can not be sent here since we are not allowed to
- wait for the completion of the first message in this context, and sending
- the dump request before completion of the previous message leaves the POD
- in an undefined state. The dump request will be sent when the echoed
- commands are received.
- *) This method fails if a param change message is "chopped" after the first
- byte.
-*/
-void line6_pod_midi_postprocess(struct usb_line6_pod *pod, unsigned char *data,
- int length)
-{
- int i;
-
- if (!pod->midi_postprocess)
- return;
-
- for (i = 0; i < length; ++i) {
- if (data[i] == (LINE6_PROGRAM_CHANGE | LINE6_CHANNEL_HOST)) {
- line6_invalidate_current(&pod->dumpreq);
- break;
- } else
- if ((data[i] == (LINE6_PARAM_CHANGE | LINE6_CHANNEL_HOST))
- && (i < length - 1))
- if ((data[i + 1] == POD_amp_model_setup)
- || (data[i + 1] == POD_effect_setup)) {
- line6_invalidate_current(&pod->dumpreq);
- break;
- }
- }
-}
-
/*
Transmit PODxt Pro control parameter.
*/
Device ID.
*/
int device_id;
-
- /**
- Flag to enable MIDI postprocessing.
- */
- char midi_postprocess;
};
extern void line6_pod_disconnect(struct usb_interface *interface);
extern int line6_pod_init(struct usb_interface *interface,
struct usb_line6_pod *pod);
-extern void line6_pod_midi_postprocess(struct usb_line6_pod *pod,
- unsigned char *data, int length);
extern void line6_pod_process_message(struct usb_line6_pod *pod);
extern void line6_pod_transmit_parameter(struct usb_line6_pod *pod, int param,
u8 value);