/*
 * can_communication.h
 *
 *  Created on: Mar 12, 2025
 *      Author: janek
 */

#ifndef INC_CAN_COMMUNICATION_H_
#define INC_CAN_COMMUNICATION_H_

#include "channel_control.h"
#include "can_halal.h"
#include "current_monitoring.h"

#define RX_STATUS_HEARTBEAT 0xC7	// IDs of all CAN-packages (may be other IDs next year)
#define RX_STATUS_MSG_ID 0xC8
#define TX_STATUS_MSG_ID 0xC9
#define CUR_CHANNELS_1_ID 0xCA
#define CUR_CHANNELS_2_ID 0xCB
#define CUR_CHANNELS_3_ID 0xCC
#define CUR_CHANNELS_4_ID 0xCD
#define ERROR_ID 0xCE

typedef struct {
	enable_gpios iostatus;
	uint8_t checksum;
} rx_status_frame;

void can_init(CAN_HandleTypeDef* hcan);
void can_rxupdateFrame();
void can_sendloop();

#endif /* INC_CAN_COMMUNICATION_H_ */