Exemplo n.º 1
0
/*! \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;
}
Exemplo n.º 2
0
//! 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);
	}
}
Exemplo n.º 3
0
Arquivo: ecu_can.c Projeto: aakre/ecu
/* 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);
	}
}
Exemplo n.º 4
0
Arquivo: ecu_can.c Projeto: aakre/ecu
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);
	} 
}