void scsis_request(SCSIS* scsis, IPC* ipc) { if (HAL_GROUP(ipc->cmd) != scsis->storage_descriptor->hal) { error(ERROR_NOT_SUPPORTED); return; } switch (HAL_ITEM(ipc->cmd)) { case IPC_READ: case IPC_WRITE: //IDLE - means resetted before - ignore IO messages if (scsis->state != SCSIS_STATE_IDLE) scsis_bc_storage_io_complete(scsis, (int)ipc->param3); break; case STORAGE_GET_MEDIA_DESCRIPTOR: scsis_get_media_descriptor(scsis, (int)ipc->param3); break; case STORAGE_NOTIFY_STATE_CHANGE: if (scsis->storage_descriptor->flags & SCSI_STORAGE_DESCRIPTOR_REMOVABLE) { #if (SCSI_MMC) scsis->media_status_changed = true; #endif //SCSI_MMC if (scsis->media != NULL) scsis_media_removed(scsis); else scsis_request_media(scsis); storage_request_notify_state_change(scsis->storage_descriptor->hal, scsis->storage_descriptor->storage, scsis->storage_descriptor->user); } break; default: error(ERROR_NOT_SUPPORTED); } }
void mscd_class_request(USBD* usbd, void* param, IPC* ipc) { MSCD* mscd = (MSCD*)param; switch (HAL_GROUP(ipc->cmd)) { case HAL_USB: mscd_driver_event(usbd, mscd, ipc); break; default: if (USBD_IFACE_ITEM(ipc->param1) == mscd->io_owner) scsis_request(MSCD_SCSI(mscd)[mscd->io_owner], ipc); else mscd_release_io(mscd); } }
void app() { APP app; CC1101 cc1101; IPC ipc; app_init(&app); cc1101_hw_init(&cc1101); for (;;) { ipc_read(&ipc); switch (HAL_GROUP(ipc.cmd)) { default: error(ERROR_NOT_SUPPORTED); break; } ipc_write(&ipc); } }
void loras_main() { IPC ipc; LORA lora; #if (LORA_DEBUG) open_stdout(); #endif //LORA_DEBUG init(&lora); for (;;) { ipc_read(&ipc); switch (HAL_GROUP(ipc.cmd)) { case HAL_LORA: loras_request(&lora, &ipc); break; default: error(ERROR_NOT_SUPPORTED); break; } ipc_write(&ipc); } }
void hidd_kbd_class_request(USBD* usbd, void* param, IPC* ipc) { HIDD_KBD* hidd = (HIDD_KBD*)param; if (HAL_GROUP(ipc->cmd) == HAL_USB) hidd_kbd_driver_event(usbd, hidd, ipc); else switch (HAL_ITEM(ipc->cmd)) { case USB_HID_KBD_MODIFIER_CHANGE: hidd_kbd_modifier_change(usbd, hidd, ipc->param2); break; case USB_HID_KBD_KEY_PRESS: hidd_kbd_key_press(usbd, hidd, ipc->param2); break; case USB_HID_KBD_KEY_RELEASE: hidd_kbd_key_release(usbd, hidd, ipc->param2); break; case USB_HID_KBD_GET_LEDS_STATE: hidd_kbd_get_leds_state(hidd, ipc); break; default: error(ERROR_NOT_SUPPORTED); } }