Files
DBW/DBW_V2/Core/Inc/ts_comms.h
v0stap 78e6a1b8aa base
2026-04-05 11:31:20 +02:00

109 lines
3.0 KiB
C

/*
* ts_comms.h
*
* Created on: 22 Oct 2020
* Author: Dmitrijs
*/
#ifndef TS_COMMS_H_
#define TS_COMMS_H_
#include <stdint.h>
typedef unsigned char crc_t;
#define TS_CAN_ID 0
#ifndef TS_CAN_ID
#error Set CAN ID !!! ts_comms.h
#endif
// Timeouts for comms: in mS
// Timeout for receive 2 bytes after <cmd>
#define RECEIVE_INDEX_TIMEOUT 10
//Timeout for receive 4 bytes of OFFSET and COUNT
#define RECEIVE_DATA_LOCATION_TIMEOUT 10
//Time out for receive block of data
#define RECEIVE_DATA_TIMEOUT 255
//Timeout for RESET sequence.
#define RECEIVE_RESET_TIMEOUT 1
#define RECEIVE_TABLE_TIMEOUT 255
//Define SCI MODES
#define IDLE 0
#define TRANSMISSION_IN_PROGRESS 1
#define RECEIVE_INDEX 1
#define RECEIVE_DATA_LOCATION 2
#define RECEIVE_DATA 3
#define RECEIVE_TABLE_DATA 4
#define RECEIVE_CANID 5
#define RECEIVE_RESET_CMD 10
//DEFINE ERROR CODES FOR TS COMMS
#define DATA_OVERRUN_ERROR 1
#define FRAME_ERROR 2
#define PARITY_ERROR 3
#define UNRECOGNIZED_1_LETTER_CMD 4
#define REQUEST_TO_TRANSMIT_WHILE_TRANSMITTING 5
#define RESET_SEQUENCE_FAILED 6
#define RESET_SEQUENCE_RECEIVED 7
#define MEMORY_ACCESS_VIOLATION 8
#define RX_TIMEOUT 9
#define NOICE_ERROR 10
#define SCI_FLAGS_CRC32 1
#define SCI_FLAGS_TX_VARIABLES 2
#define READ_DATA_FROM_ADC0 0
#define READ_DATA_FROM_ADC1 1
#define READ_DATA_FROM_CONFIG_ADC0 2
#define READ_DATA_FROM_CONFIG_ADC1 3
#define READ_DATA_FROM_Z0 4
#define READ_DATA_FROM_Z1 5
typedef struct {
unsigned char mode; //1
unsigned char cmd; //2
unsigned char CANid; //3
unsigned char table_index; //4
unsigned short offset; //5
unsigned short data_size; //7
unsigned short cnt; //9
unsigned short bytes_done; //11
unsigned char *address; //13
unsigned char current_table_index; //15
unsigned char error_cnt; //16
unsigned char error_code; //17
unsigned short timeout; //18
unsigned char pause_flag;
unsigned char dummy;
unsigned long crc32; //19
unsigned char can_bufer[256];
} comms_status;
void Rx_Char(unsigned char data); // pass RX byte stream here
void Poll_Tx(void); // function returns pointer to buffer and sets count
// of bytes to be transmitted
void TX_Done(void); // call this function when all data has been transmitted
void Comms_Init(void);
void Write_Config(void);
extern comms_status RX;
extern comms_status TX;
extern unsigned char SCI_flags;
extern const char Signature[20];
extern const char Revision[20];
extern char crc32_bufer[8];
void Comms_Reset(comms_status *CS);
void TX_Schedule(unsigned char *data, unsigned short count);
void Copy_Tx_Vars(void);
void CRC32(void);
crc_t calc_crc(crc_t message[], int nBytes);
uint32_t crc32(void *buf, uint32_t size);
uint32_t crc32inc(void *buf, uint32_t crc, uint32_t size);
void TS_Comms_RX_Timeout(void);
#endif /* TS_COMMS_H_ */