11 changed files with 146 additions and 70 deletions
-
49sdk/chip/exhal/stm32_exhal_uart.cpp
-
2sdk/chip/exhal/stm32_exhal_uart.hpp
-
1sdk/chip/irq_dispatcher/zuart_irq_dispatcher.cpp
-
64sdk/components/pipette_module/pipette_ctrl_module.cpp
-
3sdk/components/pipette_module/pipette_ctrl_module.hpp
-
1sdk/components/pipette_module/pipette_ctrl_module_utils.cpp
-
14sdk/components/sensors/smtp2_v2/smtp2_v2.cpp
-
25sdk/components/sensors/smtp2_v2/smtp2_v2.hpp
-
48sdk/components/sensors/smtp2_v2/smtp_pressure_stream_processer.hpp
-
1sdk/components/zcan_protocol_parser/zcan_protocol_parser.cpp
-
8usrc/subboards/subboard80_cliptip/subboard80_cliptip_board.c
@ -0,0 +1,48 @@ |
|||
#pragma once
|
|||
#include <string.h>
|
|||
|
|||
#include "a8000_protocol\protocol.hpp"
|
|||
#include "sdk\os\zos.hpp"
|
|||
namespace iflytop { |
|||
using namespace std; |
|||
|
|||
class SmtpPressureStreamProcesser { |
|||
private: |
|||
uint8_t m_rxbuf[20] = {0}; |
|||
int32_t m_rxnum = 0; |
|||
bool m_is_ready_flag = false; |
|||
|
|||
char m_state = '`'; |
|||
int32_t m_pressure = 0; |
|||
char m_pressure_cache[10]; |
|||
int32_t m_pressure_uuid = 0; |
|||
|
|||
public: |
|||
void process_rx(char data) { |
|||
if (data == '/') { |
|||
m_rxnum = 0; |
|||
} |
|||
if (m_rxnum >= sizeof(m_rxbuf) - 1) return; |
|||
m_rxbuf[m_rxnum] = data; |
|||
m_rxnum++; |
|||
|
|||
if (m_rxbuf[m_rxnum - 1] == 0x0a && m_rxbuf[m_rxnum - 2] == 0x0d && m_rxbuf[1] == '0') { |
|||
|
|||
if ((m_rxnum - 6) != 4) return; |
|||
|
|||
memcpy(m_pressure_cache, &m_rxbuf[3], 4); |
|||
m_pressure_cache[4] = 0; // Null-terminate the string
|
|||
|
|||
m_pressure = atoi(m_pressure_cache); |
|||
m_pressure_uuid++; |
|||
m_is_ready_flag = true; |
|||
} |
|||
} |
|||
void getPressure(int32_t *pressure, int32_t *pressureuuid) const { |
|||
__disable_irq(); |
|||
if (pressure) *pressure = m_pressure; |
|||
if (pressureuuid) *pressureuuid = m_pressure_uuid; |
|||
__enable_irq(); |
|||
} |
|||
}; |
|||
} // namespace iflytop
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue