/*! \brief CAN Call Back when message is received */ void can_out_callback_channel0(U8 handle, U8 event) { gpio_tgl_gpio_pin(LED3_GPIO); // Reception Only pCANMOB_message2[0].can_msg->data.u64 = can_get_mob_data(0,handle).u64; pCANMOB_message2[0].can_msg->id = can_get_mob_id(0,handle); pCANMOB_message2[0].dlc = can_get_mob_dlc(0,handle); pCANMOB_message2[0].status = event; can_mob_free(0,handle); message_received_on_channel0 = true; }
//! Call Back called by can_drv void can_out_callback_channel0(U8 handle, U8 event) { /* Reception of Wakeup frame */ if (handle == NO_MOB) { /* Disable Wake-Up Mode */ CANIF_disable_wakeup(CAN_CHANNEL_EXAMPLE); /* Clear Interrupt Flag */ CANIF_clr_interrupt_status(CAN_CHANNEL_EXAMPLE); gpio_clr_gpio_pin(LED0_GPIO); } else { /* Reception of Data frame */ appli_rx_msg.can_msg->data.u64 = can_get_mob_data(CAN_CHANNEL_EXAMPLE,handle).u64; appli_rx_msg.can_msg->id = can_get_mob_id(CAN_CHANNEL_EXAMPLE,handle); appli_rx_msg.dlc = can_get_mob_dlc(CAN_CHANNEL_EXAMPLE,handle); appli_rx_msg.status = event; can_mob_free(CAN_CHANNEL_EXAMPLE,handle); nb_message_received_on_channel0 = 1; gpio_clr_gpio_pin(LED1_GPIO); } }
/* Call Back called by can_drv, channel 1 */ void can_out_callback_channel1(U8 handle, U8 event){ if (handle == mob_rx_speed_sens_fl.handle) { mob_rx_speed_sens_fl.can_msg->data.u64 = can_get_mob_data(CAN_BUS_1, handle).u64; mob_rx_speed_sens_fl.can_msg->id = can_get_mob_id(CAN_BUS_1, handle); mob_rx_speed_sens_fl.dlc = can_get_mob_dlc(CAN_BUS_1, handle); mob_rx_speed_sens_fl.status = event; xQueueOverwriteFromISR(queue_wheel_fl, &mob_rx_speed_sens_fl.can_msg->data.u16[0], NULL); /* Empty message field */ mob_rx_speed_sens_fl.can_msg->data.u64 = 0x0LL; /* Prepare message reception */ can_rx(CAN_BUS_1, mob_rx_speed_sens_fl.handle, mob_rx_speed_sens_fl.req_type, mob_rx_speed_sens_fl.can_msg); } else if (handle == mob_rx_speed_sens_fr.handle) { mob_rx_speed_sens_fr.can_msg->data.u64 = can_get_mob_data(CAN_BUS_1, handle).u64; mob_rx_speed_sens_fr.can_msg->id = can_get_mob_id(CAN_BUS_1, handle); mob_rx_speed_sens_fr.dlc = can_get_mob_dlc(CAN_BUS_1, handle); mob_rx_speed_sens_fr.status = event; xQueueOverwriteFromISR(queue_wheel_fr, &mob_rx_speed_sens_fr.can_msg->data.u16[0], NULL); /* Empty message field */ mob_rx_speed_sens_fr.can_msg->data.u64 = 0x0LL; /* Prepare message reception */ can_rx(CAN_BUS_1, mob_rx_speed_sens_fr.handle, mob_rx_speed_sens_fr.req_type, mob_rx_speed_sens_fr.can_msg); } else if (handle == mob_rx_speed_sens_rl.handle) { mob_rx_speed_sens_rl.can_msg->data.u64 = can_get_mob_data(CAN_BUS_1, handle).u64; mob_rx_speed_sens_rl.can_msg->id = can_get_mob_id(CAN_BUS_1, handle); mob_rx_speed_sens_rl.dlc = can_get_mob_dlc(CAN_BUS_1, handle); mob_rx_speed_sens_rl.status = event; xQueueOverwriteFromISR(queue_wheel_rl, &mob_rx_speed_sens_rl.can_msg->data.u16[0], NULL); /* Empty message field */ mob_rx_speed_sens_rl.can_msg->data.u64 = 0x0LL; /* Prepare message reception */ can_rx(CAN_BUS_1, mob_rx_speed_sens_rl.handle, mob_rx_speed_sens_rl.req_type, mob_rx_speed_sens_rl.can_msg); } else if (handle == mob_rx_speed_sens_rr.handle) { mob_rx_speed_sens_rr.can_msg->data.u64 = can_get_mob_data(CAN_BUS_1, handle).u64; mob_rx_speed_sens_rr.can_msg->id = can_get_mob_id(CAN_BUS_1, handle); mob_rx_speed_sens_rr.dlc = can_get_mob_dlc(CAN_BUS_1, handle); mob_rx_speed_sens_rr.status = event; xQueueOverwriteFromISR(queue_wheel_rr, &mob_rx_speed_sens_rr.can_msg->data.u16[0], NULL); /* Empty message field */ mob_rx_speed_sens_rr.can_msg->data.u64 = 0x0LL; /* Prepare message reception */ can_rx(CAN_BUS_1, mob_rx_speed_sens_rr.handle, mob_rx_speed_sens_rr.req_type, mob_rx_speed_sens_rr.can_msg); } else if (handle == mob_rx_trq_sens1.handle) { mob_rx_trq_sens1.can_msg->data.u64 = can_get_mob_data(CAN_BUS_1, handle).u64; mob_rx_trq_sens1.can_msg->id = can_get_mob_id(CAN_BUS_1, handle); mob_rx_trq_sens1.dlc = can_get_mob_dlc(CAN_BUS_1, handle); mob_rx_trq_sens1.status = event; xQueueOverwriteFromISR(queue_trq_sens1, &mob_rx_trq_sens1.can_msg->data.s16[0], NULL); xQueueOverwriteFromISR(queue_trq_sens1_err, &mob_rx_trq_sens1.can_msg->data.u8[2], NULL); asm("nop"); /* Empty message field */ mob_rx_trq_sens1.can_msg->data.u64 = 0x0LL; /* Prepare message reception */ can_rx(CAN_BUS_1, mob_rx_trq_sens1.handle, mob_rx_trq_sens1.req_type, mob_rx_trq_sens1.can_msg); } else if (handle == mob_rx_bms_precharge.handle) { mob_rx_bms_precharge.can_msg->data.u64 = can_get_mob_data(CAN_BUS_1, handle).u64; mob_rx_bms_precharge.can_msg->id = can_get_mob_id(CAN_BUS_1, handle); mob_rx_bms_precharge.dlc = can_get_mob_dlc(CAN_BUS_1, handle); mob_rx_bms_precharge.status = event; bms_can_msg_t bms_can_msg; bms_can_msg.data.u64 = mob_rx_bms_precharge.can_msg->data.u64; bms_can_msg.id = mob_rx_bms_precharge.can_msg->id; xQueueSendToBackFromISR(queue_bms_rx, &bms_can_msg, NULL); /* Empty message field */ mob_rx_bms_precharge.can_msg->data.u64 = 0x0LL; /* Prepare message reception */ can_rx(CAN_BUS_1, mob_rx_bms_precharge.handle, mob_rx_bms_precharge.req_type, mob_rx_bms_precharge.can_msg); } else if (handle == mob_rx_bms_battvolt.handle) { mob_rx_bms_battvolt.can_msg->data.u64 = can_get_mob_data(CAN_BUS_1, handle).u64; mob_rx_bms_battvolt.can_msg->id = can_get_mob_id(CAN_BUS_1, handle); mob_rx_bms_battvolt.dlc = can_get_mob_dlc(CAN_BUS_1, handle); mob_rx_bms_battvolt.status = event; bms_can_msg_t bms_can_msg; bms_can_msg.data.u64 = mob_rx_bms_battvolt.can_msg->data.u64; bms_can_msg.id = mob_rx_bms_battvolt.can_msg->id; xQueueSendToBackFromISR(queue_bms_rx, &bms_can_msg, NULL); /* Empty message field */ mob_rx_bms_battvolt.can_msg->data.u64 = 0x0LL; /* Prepare message reception */ can_rx(CAN_BUS_1, mob_rx_bms_battvolt.handle, mob_rx_bms_battvolt.req_type, mob_rx_bms_battvolt.can_msg); } else if (handle == mob_brk.handle) { mob_brk.can_msg->data.u64 = can_get_mob_data(CAN_BUS_1, handle).u64; mob_brk.can_msg->id = can_get_mob_id(CAN_BUS_1, handle); mob_brk.dlc = can_get_mob_dlc(CAN_BUS_1, handle); mob_brk.status = event; if (mob_brk.can_msg->id == (CANR_FCN_DATA_ID | CANR_GRP_SENS_BRK_ID | CANR_MODULE_ID0_ID)) { xQueueSendToBackFromISR( queue_brake_front, &mob_brk.can_msg->data.u16[0], NULL ); } else { xQueueSendToBackFromISR( queue_brake_rear, &mob_brk.can_msg->data.u16[0], NULL ); } /* Empty message field */ mob_brk.can_msg->data.u64 = 0x0LL; /* Prepare message reception */ can_rx(CAN_BUS_1, mob_brk.handle, mob_brk.req_type, mob_brk.can_msg); } }
void can_out_callback_channel0(U8 handle, U8 event){ if (handle == mob_rx_dash_pri.handle) { mob_rx_dash_pri.can_msg->data.u64 = can_get_mob_data(CAN_BUS_0, handle).u64; mob_rx_dash_pri.can_msg->id = can_get_mob_id(CAN_BUS_0, handle); mob_rx_dash_pri.dlc = can_get_mob_dlc(CAN_BUS_0, handle); mob_rx_dash_pri.status = event; dash_can_msg_t dash_can_msg; dash_can_msg.data.u64 = mob_rx_dash_pri.can_msg->data.u64; dash_can_msg.id = mob_rx_dash_pri.can_msg->id; xQueueSendToBackFromISR(queue_dash_msg, &dash_can_msg, NULL); /* Empty message field */ mob_rx_dash_pri.can_msg->data.u64 = 0x0LL; /* Prepare message reception */ can_rx(CAN_BUS_0, mob_rx_dash_pri.handle, mob_rx_dash_pri.req_type, mob_rx_dash_pri.can_msg); } else if (handle == mob_rx_dash_data.handle) { mob_rx_dash_data.can_msg->data.u64 = can_get_mob_data(CAN_BUS_0, handle).u64; mob_rx_dash_data.can_msg->id = can_get_mob_id(CAN_BUS_0, handle); mob_rx_dash_data.dlc = can_get_mob_dlc(CAN_BUS_0, handle); mob_rx_dash_data.status = event; dash_can_msg_t dash_can_msg; dash_can_msg.data.u64 = mob_rx_dash_data.can_msg->data.u64; dash_can_msg.id = mob_rx_dash_data.can_msg->id; xQueueSendToBackFromISR(queue_dash_msg, &dash_can_msg, NULL); /* Empty message field */ mob_rx_dash_data.can_msg->data.u64 = 0x0LL; /* Prepare message reception */ can_rx(CAN_BUS_0, mob_rx_dash_data.handle, mob_rx_dash_data.req_type, mob_rx_dash_data.can_msg); } else if (handle == mob_rx_trq_sens0.handle) { mob_rx_trq_sens0.can_msg->data.u64 = can_get_mob_data(CAN_BUS_0, handle).u64; mob_rx_trq_sens0.can_msg->id = can_get_mob_id(CAN_BUS_0, handle); mob_rx_trq_sens0.dlc = can_get_mob_dlc(CAN_BUS_0, handle); mob_rx_trq_sens0.status = event; xQueueOverwriteFromISR(queue_trq_sens0, &mob_rx_trq_sens0.can_msg->data.s16[0], NULL); xQueueOverwriteFromISR(queue_trq_sens0_err, &mob_rx_trq_sens0.can_msg->data.u8[2], NULL); asm("nop"); /* Empty message field */ mob_rx_trq_sens0.can_msg->data.u64 = 0x0LL; /* Prepare message reception */ can_rx(CAN_BUS_0, mob_rx_trq_sens0.handle, mob_rx_trq_sens0.req_type, mob_rx_trq_sens0.can_msg); } else if (handle == mob_rx_bspd.handle) { mob_rx_bspd.can_msg->data.u64 = can_get_mob_data(CAN_BUS_0, handle).u64; mob_rx_bspd.can_msg->id = can_get_mob_id(CAN_BUS_0, handle); mob_rx_bspd.dlc = can_get_mob_dlc(CAN_BUS_0, handle); mob_rx_bspd.status = event; xQueueOverwriteFromISR( queue_bspd, &mob_rx_bspd.can_msg->data.u8[0], NULL ); /* Empty message field */ mob_rx_bspd.can_msg->data.u64 = 0x0LL; /* Prepare message reception */ can_rx(CAN_BUS_0, mob_rx_bspd.handle, mob_rx_bspd.req_type, mob_rx_bspd.can_msg); } }