You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
3.0 KiB
111 lines
3.0 KiB
/*
|
|
* bsp_desulfurizer_handler.c
|
|
*
|
|
* Created on: Jul 29, 2024
|
|
* Author: akeguo
|
|
*/
|
|
#include "msp_WH_LTE_7S0.h"
|
|
#include "msp_Angle_Encoder_YL159.h"
|
|
#include "pb_decode.h"
|
|
#include "pb_encode.h"
|
|
#include "bsp_include.h"
|
|
#include "pb.h"
|
|
#include "bsp_Desulfurizer.pb.h"
|
|
#include "bsp_Cmd.pb.h"
|
|
#include <stdio.h>
|
|
#include <stdbool.h>
|
|
#include <stdlib.h>
|
|
#include "bsp_Log.h"
|
|
#include "msp_Steering_Engine.h"
|
|
#include "BHBF_ROBOT.h"
|
|
#include "bsp_cpu_flash.h"
|
|
#include <bsp_qspi_w25q128.h>
|
|
#include <bsp_UpperComputer_Handler.h>
|
|
|
|
#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->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
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|