Apollo 10.0
自动驾驶开放平台
protocol_asensing.cc 文件参考
#include "modules/drivers/gnss/parser/asensing_parser/protocol_asensing.h"
#include <cmath>
#include <fstream>
#include <iostream>
#include <sstream>
#include <utility>
protocol_asensing.cc 的引用(Include)关系图:

浏览源代码.

枚举

enum  ERROR_CODE {
  NO_ERR , POLL_TIMEOUT , VERIFY_WRITE , INVALID_SECTOR ,
  INVALID_BLOCK , UNKNOWN_COMMAND , PROCESS_COMMAND_ERR , NOT_READ_ERROR ,
  DRV_NOTAT_BREAK , BUFFER_IS_NULL , NO_ACCESS_SECTOR , NUM_ERROR_CODES ,
  UART_RX_FULL , UART_TX_FULL , UART_RX_BUF_EMPTY , OUT_OF_FLASH_NUM ,
  FLASH_GET_CODE_FAIL , FLASH_COMPARE_ERROR , UNDEFINED_URX_STAT , UNDEFINED_INS ,
  FAIL_ON_MALLOC , CHECK_SUM_ERR , TOO_MUCH_DATA , OUT_OF_16BIT_RANGE ,
  MATRIX_NO_INVERSE , WRITE_BACK_FLASH , SDRAM_TEST_ERR , COMP_SELFCHECK_FAIL ,
  UNFINISHED_HMC5883SEQ , SENSOR_SATURATION , GYRO_BIT_ERR , CALIB_MAG2D_LARGE_INCLIN ,
  ACCEL_INITIAL_CHECK_ERR , GYRO_INITIAL_CHECK_ERR
}
 

函数

bool createFileAndWrite (const std::string &filename, const std::string &content)
 
bool AppendCsv (const std::string &filename, const std::vector< std::string > &data)
 

枚举类型说明

◆ ERROR_CODE

enum ERROR_CODE
枚举值
NO_ERR 
POLL_TIMEOUT 
VERIFY_WRITE 
INVALID_SECTOR 
INVALID_BLOCK 
UNKNOWN_COMMAND 
PROCESS_COMMAND_ERR 
NOT_READ_ERROR 
DRV_NOTAT_BREAK 
BUFFER_IS_NULL 
NO_ACCESS_SECTOR 
NUM_ERROR_CODES 
UART_RX_FULL 
UART_TX_FULL 
UART_RX_BUF_EMPTY 
OUT_OF_FLASH_NUM 
FLASH_GET_CODE_FAIL 
FLASH_COMPARE_ERROR 
UNDEFINED_URX_STAT 
UNDEFINED_INS 
FAIL_ON_MALLOC 
CHECK_SUM_ERR 
TOO_MUCH_DATA 
OUT_OF_16BIT_RANGE 
MATRIX_NO_INVERSE 
WRITE_BACK_FLASH 
SDRAM_TEST_ERR 
COMP_SELFCHECK_FAIL 
UNFINISHED_HMC5883SEQ 
SENSOR_SATURATION 
GYRO_BIT_ERR 
CALIB_MAG2D_LARGE_INCLIN 
ACCEL_INITIAL_CHECK_ERR 
GYRO_INITIAL_CHECK_ERR 

在文件 protocol_asensing.cc25 行定义.

25 {
26 NO_ERR,
27 POLL_TIMEOUT, // Polling toggle bit failed
28 VERIFY_WRITE, // Verifying write to flash failed
29 INVALID_SECTOR, // Invalid Sector
30 INVALID_BLOCK, // Invalid Block
31 UNKNOWN_COMMAND, // Unknown Command
32 PROCESS_COMMAND_ERR, // Processing command
33 NOT_READ_ERROR, // Could not read memory from target
34 DRV_NOTAT_BREAK, // The drive was not at AFP_BreakReady
35 BUFFER_IS_NULL, // Could not allocate storage for the buffer
36 NO_ACCESS_SECTOR, // Cannot access the sector( could be locked or something
37 // is stored there that should not be touched )
39 UART_RX_FULL, // Lost one byte when the RX circular buffer is full.
40 UART_TX_FULL, // When TX circular buffer is full, push one byte will be lost
41 UART_RX_BUF_EMPTY, // Try to pop one byte from empty RX circular buffer
42 OUT_OF_FLASH_NUM, // Out of flash number (0-2)
43 FLASH_GET_CODE_FAIL, // Check codes of flash devices failed
44 FLASH_COMPARE_ERROR, // Compare read/write flash error
45 UNDEFINED_URX_STAT, // Undefined uart rx buf status
46 UNDEFINED_INS, // Undefined instruction
47 FAIL_ON_MALLOC, // Failed on malloc()
48 CHECK_SUM_ERR, // Check sum error, VR101 protocol
49 TOO_MUCH_DATA, // Too much data to print in a data rate period
50 OUT_OF_16BIT_RANGE, // Out of 16bit range
51 MATRIX_NO_INVERSE, // Matrix no inverse
52 WRITE_BACK_FLASH, // Try to write to a Flash address that have been written
53 SDRAM_TEST_ERR, // SDRAM self test error
54 COMP_SELFCHECK_FAIL, // Compass self check fail
55 UNFINISHED_HMC5883SEQ, // Unfinished HMC5883 continous read sequence while
56 // starting a new one
57 SENSOR_SATURATION, // Sensor saturation
58 GYRO_BIT_ERR, // Gyro Built-in-test error
59 CALIB_MAG2D_LARGE_INCLIN, // too large pitch or roll angle during 2D
60 // magnetometer calib
61 ACCEL_INITIAL_CHECK_ERR, // Accel initial check error
62 GYRO_INITIAL_CHECK_ERR // gyroscope initial check error
63};
@ BUFFER_IS_NULL
@ UNFINISHED_HMC5883SEQ
@ TOO_MUCH_DATA
@ VERIFY_WRITE
@ SDRAM_TEST_ERR
@ FLASH_GET_CODE_FAIL
@ POLL_TIMEOUT
@ CALIB_MAG2D_LARGE_INCLIN
@ FLASH_COMPARE_ERROR
@ DRV_NOTAT_BREAK
@ GYRO_BIT_ERR
@ PROCESS_COMMAND_ERR
@ NO_ACCESS_SECTOR
@ INVALID_SECTOR
@ ACCEL_INITIAL_CHECK_ERR
@ OUT_OF_FLASH_NUM
@ UART_TX_FULL
@ SENSOR_SATURATION
@ UNDEFINED_INS
@ FAIL_ON_MALLOC
@ COMP_SELFCHECK_FAIL
@ GYRO_INITIAL_CHECK_ERR
@ MATRIX_NO_INVERSE
@ INVALID_BLOCK
@ OUT_OF_16BIT_RANGE
@ NOT_READ_ERROR
@ UNDEFINED_URX_STAT
@ WRITE_BACK_FLASH
@ UART_RX_FULL
@ NUM_ERROR_CODES
@ CHECK_SUM_ERR
@ UNKNOWN_COMMAND
@ UART_RX_BUF_EMPTY

函数说明

◆ AppendCsv()

bool AppendCsv ( const std::string &  filename,
const std::vector< std::string > &  data 
)

在文件 protocol_asensing.cc194 行定义.

195 {
196 std::ofstream file(filename, std::ios_base::app);
197 if (!file.is_open()) {
198 std::cerr << "无法打开文件 " << filename << "\n";
199 return false;
200 }
201
202 std::ostringstream oss;
203 for (const auto& s : data) {
204 oss << s << ",";
205 }
206 std::string line = oss.str();
207 if (!line.empty()) {
208 line.pop_back(); // 删除最后一个逗号
209 }
210 line += "\n";
211
212 file << line;
213
214 file.close();
215 return true;
216}

◆ createFileAndWrite()

bool createFileAndWrite ( const std::string &  filename,
const std::string &  content 
)

在文件 protocol_asensing.cc172 行定义.

173 {
174 std::ifstream checkFile(filename);
175 if (checkFile.good()) {
176 std::cout << "文件已存在: " << filename << std::endl;
177 return false;
178 }
179 checkFile.close();
180
181 std::ofstream file(filename);
182 if (!file) {
183 std::cerr << "无法创建文件: " << filename << std::endl;
184 return false;
185 }
186
187 file << content << std::endl;
188 file.close();
189
190 std::cout << "已写入文件: " << filename << std::endl;
191 return true;
192}