Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * CybergunProtoClass.hpp
- *
- * Created: 03.06.2022 13:21:22
- * Author: tabr
- */
- #ifndef __CYBERGUNPROTOCLASS_HPP__
- #define __CYBERGUNPROTOCLASS_HPP__
- #ifdef USE_UART_DEBUG_COMMANDS
- #warning("ANY DATA CANNOT BE MORE THAN 250")
- #endif //USE_UART_DEBUG_COMMANDS
- class CybergunProtoClass{
- public:
- const static uint8_t STUCK_THRESHOLD = 10;
- #ifdef USE_UART_DEBUG_COMMANDS
- const static uint8_t UART_COMMAND_DUMMY = 0xFF;
- const static uint8_t UART_COMMAND_PRORO_RESET = 0xFE;
- const static uint8_t UART_COMMAND_SHOT = 0xFD;
- #endif //USE_UART_DEBUG_COMMANDS
- const static uint8_t CRC_LENGTH_BYTES = 2;
- const static uint8_t PACKET_COMMAND_EMPTY = 0x00;
- enum CG_PACKET_STUCTURE{
- CG_PACKET_STUCTURE_HEAD,
- CG_PACKET_STUCTURE_SUBHEAD,
- CG_PACKET_STUCTURE_DATA0,
- CG_PACKET_STUCTURE_DATA1,
- CG_PACKET_STUCTURE_DATA2,
- CG_PACKET_STUCTURE_DATA3,
- CG_PACKET_STUCTURE_CRC16H,
- CG_PACKET_STUCTURE_CRC16L,
- CG_PACKET_STUCTURE_PACKET_SIZE
- };
- enum CG_PACKET_STUCTURE_HEAD_TYPES{
- CG_PACKET_STUCTURE_HEAD_TYPE_REQUEST,
- CG_PACKET_STUCTURE_HEAD_TYPE_ANSWER,
- CG_PACKET_STUCTURE_HEAD_TYPE_MCUIRQ,
- CG_PACKET_STUCTURE_HEAD_TYPE_ERROR,
- CG_PACKET_STUCTURE_HEAD_TYPE_SIZE
- };
- enum CG_PACKET_STUCTURE_REQUESTS{
- CG_PACKET_STUCTURE_REQUEST_SET_STORAGE,
- CG_PACKET_STUCTURE_REQUEST_GET_STORAGE,
- CG_PACKET_STUCTURE_REQUEST_SET_PIN,//unimplemented
- CG_PACKET_STUCTURE_REQUEST_GET_PIN,//unimplemented
- CG_PACKET_STUCTURE_REQUEST_RESTART_MCU,//unimplemented
- CG_PACKET_STUCTURE_REQUEST_RESTART_BTDEVICE,//unimplemented
- CG_PACKET_STUCTURE_REQUEST_RESTART_FULL,//unimplemented
- CG_PACKET_STUCTURE_REQUEST_PING,//unimplemented
- CG_PACKET_STUCTURE_REQUEST_UPTIME,
- CG_PACKET_STUCTURE_REQUEST_SIZE
- };
- enum STATUSES{
- STATUS_AWAINING_REQUEST,
- STATUSES_SIZE
- };
- // enum CG_PACKET_STUCTURE_ANSWERS{ ANSWERS = REQUSTS
- // CG_PACKET_STUCTURE_ANSWER_OK,
- // };
- enum CG_PACKET_STUCTURE_ERRORS{
- CG_PACKET_STUCTURE_ERROR_NO_ERROR,
- CG_PACKET_STUCTURE_ERROR_UNKNOWN_ERROR,
- CG_PACKET_STUCTURE_ERROR_UNKNOWN_PACKET_HEAD,
- CG_PACKET_STUCTURE_ERROR_INTERNAL_ERROR_BUFFER_PTR,
- CG_PACKET_STUCTURE_ERROR_UNKNOWN_REQUEST,
- CG_PACKET_STUCTURE_ERROR_CRC_ERROR,
- CG_PACKET_STUCTURE_ERROR_SHOT_DETECTED_ON_ZERO_BULLETS,
- CG_PACKET_STUCTURE_ERROR_STUCK_DETECTED,
- };
- enum MCUIRQ_COMMANDS{
- MCUIRQ_COMMAND_SHOT_DETECTED,
- MCUIRQ_COMMAND_ERROR_DETECTED,
- };
- void rx_ISR(uint8_t data);
- void ms_ISR(void);
- void clear_rx_bufer(void);
- void clear_tx_bufer(void);
- void reset(void);
- bool is_packet_valid(void);
- uint16_t get_packet_crcr16(void);
- bool is_packet_ready_to_proceed(void);
- void main(void);
- void pin_reset_up(void);
- void pin_reset_down(void);
- void pin_pio11_up(void);
- void pin_pio11_down(void);
- CybergunProtoClass(void);
- void send_answer(uint16_t dataMSB);
- void send_answer(uint32_t dataMSB);
- void send_answer_operation_successfull(void);
- void send_answer(uint8_t data0, uint8_t data1);
- void send_answer(uint8_t data0, uint8_t data1, uint8_t data2, uint8_t data3);
- //void send_mcuirq_command(MCUIRQ_COMMANDS command);
- void send_mcuirq_command(MCUIRQ_COMMANDS command, uint8_t data);
- void send_error(CG_PACKET_STUCTURE_ERRORS error);
- private:
- void refresh_tx_packet_crc(void);
- uint16_t calculate_tx_packet_crc(void);
- void send_buffer(void);
- uint8_t rx_buffer[CG_PACKET_STUCTURE_PACKET_SIZE];
- volatile uint8_t rx_buffer_ptr;
- uint8_t tx_buffer[CG_PACKET_STUCTURE_PACKET_SIZE];
- //volatile uint8_t tx_buffer_ptr;
- STATUSES current_status;
- volatile uint8_t antistuck_counter;
- };
- #endif //__CYBERGUNPROTOCLASS_HPP__
Add Comment
Please, Sign In to add comment