void line6_invalidate_current(struct line6_dump_request *l6dr) { line6_dump_started(l6dr, LINE6_DUMP_CURRENT); }
/* Process a completely received message. */ void variax_process_message(struct usb_line6_variax *variax) { const unsigned char *buf = variax->line6.buffer_message; switch (buf[0]) { case LINE6_PARAM_CHANGE | LINE6_CHANNEL_HOST: switch (buf[1]) { case VARIAXMIDI_volume: variax->volume = buf[2]; break; case VARIAXMIDI_tone: variax->tone = buf[2]; } break; case LINE6_PROGRAM_CHANGE | LINE6_CHANNEL_DEVICE: case LINE6_PROGRAM_CHANGE | LINE6_CHANNEL_HOST: variax->model = buf[1]; line6_dump_request_async(&variax->dumpreq, &variax->line6, 0); break; case LINE6_RESET: dev_info(variax->line6.ifcdev, "VARIAX reset\n"); variax_activate_delayed(variax, VARIAX_ACTIVATE_DELAY); break; case LINE6_SYSEX_BEGIN: if (memcmp(buf + 1, variax_request_model1 + 1, VARIAX_MODEL_HEADER_LENGTH - 1) == 0) { if (variax->line6.message_length == VARIAX_MODEL_MESSAGE_LENGTH) { switch (variax->dumpreq.in_progress) { case VARIAX_DUMP_PASS1: variax_decode(buf + VARIAX_MODEL_HEADER_LENGTH, (unsigned char *)&variax->model_data, (sizeof(variax->model_data.name) + sizeof(variax->model_data.control) / 2) * 2); line6_dump_request_async(&variax->dumpreq, &variax->line6, 1); line6_dump_started(&variax->dumpreq, VARIAX_DUMP_PASS2); break; case VARIAX_DUMP_PASS2: /* model name is transmitted twice, so skip it here: */ variax_decode(buf + VARIAX_MODEL_HEADER_LENGTH, (unsigned char *)&variax->model_data.control + sizeof(variax->model_data.control) / 2, sizeof(variax->model_data.control) / 2 * 2); variax->dumpreq.ok = 1; line6_dump_request_async(&variax->dumpreq, &variax->line6, 2); line6_dump_started(&variax->dumpreq, VARIAX_DUMP_PASS3); } } else { DEBUG_MESSAGES(dev_err(variax->line6.ifcdev, "illegal length %d of model data\n", variax->line6.message_length)); line6_dump_finished(&variax->dumpreq); } } else if (memcmp(buf + 1, variax_request_bank + 1, sizeof(variax_request_bank) - 2) == 0) { memcpy(variax->bank, buf + sizeof(variax_request_bank) - 1, sizeof(variax->bank)); variax->dumpreq.ok = 1; line6_dump_finished(&variax->dumpreq); } break; case LINE6_SYSEX_END: break; default: DEBUG_MESSAGES(dev_err(variax->line6.ifcdev, "Variax: unknown message %02X\n", buf[0])); } }