/* * bsp_desulfurizer_handler.c * * Created on: Jul 29, 2024 * Author: akeguo */ #include "msp_WH_LTE_7S0.h" #include "pb_decode.h" #include "pb_encode.h" #include "bsp_include.h" #include "pb.h" #include "bsp_Cmd.pb.h" #include #include #include #include "BHBF_ROBOT.h" #include "bsp_cpu_flash.h" #include #include #include "bsp_decode_command.h" void decode_command_from_computer(uint8_t *buffer, uint16_t length); struct UARTHandler *desulfurizer_message_UART_Handler; void upper_Computer_UART_Handler_intialize(struct UARTHandler *Handler) { //LOG("desulfurizer_message_UART_Handler_intialize"); desulfurizer_message_UART_Handler = Handler; desulfurizer_message_UART_Handler->dispacherController->Dispacher_Enable=0;//不周期性发送 desulfurizer_message_UART_Handler->Wait_time=30; desulfurizer_message_UART_Handler->UART_Decode = decode_command_from_computer; //indicate that there is no need to listen //desulfurizer_message_UART_Handler->DispacherCallPeriod=200; //desulfurizer_message_UART_Handler->Add_Dispatcher_List(desulfurizer_message_UART_Handler,steering_set_angle); } void send_data_to_upper_computer(double Angle, double WireLength, double Thickness, char IsFittingPoint,char isMqtt,struct UARTHandler *send_UART_Handler) { // LOG("send collected data to computer"); // DesulfurizerMessage _desulfurizer = DesulfurizerMessage_init_default; // pb_ostream_t output_stream = // { 0 }; // // _desulfurizer.Angle = Angle; // _desulfurizer.WireLength = WireLength; // _desulfurizer.Thickness = Thickness; // _desulfurizer.IsFittingPoint = IsFittingPoint; // char buf[1024]; // output_stream = pb_ostream_from_buffer(buf, sizeof(buf)); // pb_encode(&output_stream, DesulfurizerMessage_fields, &_desulfurizer); //encode to buffer // Cmd send_Cmd = Cmd_init_default; // // //将数据拷贝到Command中 // send_Cmd.CommadNum = 5; // send_Cmd.Buff_Data_Length = output_stream.bytes_written; // //拷贝数据到send_Cmd.Buff_Data中 // memcpy(send_Cmd.Buff_Data, buf, send_Cmd.Buff_Data_Length); // pb_ostream_t Cmd_out_stream = // { 0 }; // // if(isMqtt==1) // { // Cmd_out_stream = pb_ostream_from_buffer( // &send_UART_Handler->Tx_Buf[2], // sizeof(desulfurizer_message_UART_Handler->Tx_Buf)-2); // pb_encode(&Cmd_out_stream, Cmd_fields, &send_Cmd); //encode to buffer // send_UART_Handler->Tx_Buf[0]='3'; // send_UART_Handler->Tx_Buf[1]=','; // send_UART_Handler->TxCount = Cmd_out_stream.bytes_written+2; // send_UART_Handler->UART_Tx( // send_UART_Handler); // } // else // { // Cmd_out_stream = pb_ostream_from_buffer( // send_UART_Handler->Tx_Buf, // sizeof(send_UART_Handler->Tx_Buf)); // pb_encode(&Cmd_out_stream, Cmd_fields, &send_Cmd); //encode to buffer // // send_UART_Handler->TxCount = Cmd_out_stream.bytes_written; // send_UART_Handler->UART_Tx( // send_UART_Handler); // } } void decode_command_from_computer(uint8_t *buffer, uint16_t length) { if(*buffer==0x55 && *(buffer+1)==0x55 && length>=3) { decode_command_and_feedback(buffer+2, length-2, 0, desulfurizer_message_UART_Handler);//0代表非mqtt } }