303
.config
303
.config
@@ -220,7 +220,7 @@ CONFIG_ULOG_ASYNC_OUTPUT_THREAD_PRIORITY=30
|
||||
#
|
||||
# log format
|
||||
#
|
||||
# CONFIG_ULOG_OUTPUT_FLOAT is not set
|
||||
CONFIG_ULOG_OUTPUT_FLOAT=y
|
||||
CONFIG_ULOG_USING_COLOR=y
|
||||
CONFIG_ULOG_OUTPUT_TIME=y
|
||||
# CONFIG_ULOG_TIME_USING_TIMESTAMP is not set
|
||||
@@ -322,6 +322,8 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
||||
# CONFIG_PKG_USING_AGILE_FTP is not set
|
||||
# CONFIG_PKG_USING_EMBEDDEDPROTO is not set
|
||||
# CONFIG_PKG_USING_RT_LINK_HW is not set
|
||||
# CONFIG_PKG_USING_RYANMQTT is not set
|
||||
# CONFIG_PKG_USING_RYANW5500 is not set
|
||||
# CONFIG_PKG_USING_LORA_PKT_FWD is not set
|
||||
# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set
|
||||
# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set
|
||||
@@ -329,6 +331,7 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
||||
# CONFIG_PKG_USING_SMALL_MODBUS is not set
|
||||
# CONFIG_PKG_USING_NET_SERVER is not set
|
||||
# CONFIG_PKG_USING_ZFTP is not set
|
||||
# CONFIG_PKG_USING_WOL is not set
|
||||
|
||||
#
|
||||
# security packages
|
||||
@@ -420,7 +423,6 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
||||
# CONFIG_PKG_USING_SEGGER_RTT is not set
|
||||
# CONFIG_PKG_USING_RDB is not set
|
||||
# CONFIG_PKG_USING_ULOG_EASYFLASH is not set
|
||||
# CONFIG_PKG_USING_ULOG_FILE is not set
|
||||
# CONFIG_PKG_USING_LOGMGR is not set
|
||||
# CONFIG_PKG_USING_ADBD is not set
|
||||
# CONFIG_PKG_USING_COREMARK is not set
|
||||
@@ -454,7 +456,6 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
||||
# CONFIG_PKG_USING_CBOX is not set
|
||||
# CONFIG_PKG_USING_SNOWFLAKE is not set
|
||||
# CONFIG_PKG_USING_HASH_MATCH is not set
|
||||
# CONFIG_PKG_USING_FIRE_PID_CURVE is not set
|
||||
# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
|
||||
# CONFIG_PKG_USING_VOFA_PLUS is not set
|
||||
|
||||
@@ -467,7 +468,15 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
||||
#
|
||||
# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
|
||||
# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
|
||||
# CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set
|
||||
CONFIG_PKG_USING_RT_VSNPRINTF_FULL=y
|
||||
CONFIG_PKG_RT_VSNPRINTF_FULL_PATH="/packages/system/enhanced-kservice/rt_vsnprintf_full"
|
||||
# CONFIG_RT_VSNPRINTF_FULL_REPLACING_SPRINTF is not set
|
||||
# CONFIG_RT_VSNPRINTF_FULL_REPLACING_SNPRINTF is not set
|
||||
# CONFIG_RT_VSNPRINTF_FULL_REPLACING_PRINTF is not set
|
||||
# CONFIG_RT_VSNPRINTF_FULL_REPLACING_VSPRINTF is not set
|
||||
# CONFIG_RT_VSNPRINTF_FULL_REPLACING_VSNPRINTF is not set
|
||||
CONFIG_PKG_USING_RT_VSNPRINTF_FULL_LATEST_VERSION=y
|
||||
CONFIG_PKG_RT_VSNPRINTF_FULL_VER="latest"
|
||||
|
||||
#
|
||||
# acceleration: Assembly language or algorithmic acceleration packages
|
||||
@@ -531,15 +540,88 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
||||
#
|
||||
# peripheral libraries and drivers
|
||||
#
|
||||
# CONFIG_PKG_USING_SENSORS_DRIVERS is not set
|
||||
# CONFIG_PKG_USING_REALTEK_AMEBA is not set
|
||||
|
||||
#
|
||||
# sensors drivers
|
||||
#
|
||||
# CONFIG_PKG_USING_LSM6DSM is not set
|
||||
# CONFIG_PKG_USING_LSM6DSL is not set
|
||||
# CONFIG_PKG_USING_LPS22HB is not set
|
||||
# CONFIG_PKG_USING_HTS221 is not set
|
||||
# CONFIG_PKG_USING_LSM303AGR is not set
|
||||
# CONFIG_PKG_USING_BME280 is not set
|
||||
# CONFIG_PKG_USING_BME680 is not set
|
||||
# CONFIG_PKG_USING_BMA400 is not set
|
||||
# CONFIG_PKG_USING_BMI160_BMX160 is not set
|
||||
# CONFIG_PKG_USING_SPL0601 is not set
|
||||
# CONFIG_PKG_USING_MS5805 is not set
|
||||
# CONFIG_PKG_USING_DA270 is not set
|
||||
# CONFIG_PKG_USING_DF220 is not set
|
||||
# CONFIG_PKG_USING_HSHCAL001 is not set
|
||||
# CONFIG_PKG_USING_BH1750 is not set
|
||||
# CONFIG_PKG_USING_MPU6XXX is not set
|
||||
# CONFIG_PKG_USING_AHT10 is not set
|
||||
# CONFIG_PKG_USING_AP3216C is not set
|
||||
# CONFIG_PKG_USING_TSL4531 is not set
|
||||
# CONFIG_PKG_USING_DS18B20 is not set
|
||||
# CONFIG_PKG_USING_DHT11 is not set
|
||||
# CONFIG_PKG_USING_DHTXX is not set
|
||||
# CONFIG_PKG_USING_GY271 is not set
|
||||
# CONFIG_PKG_USING_GP2Y10 is not set
|
||||
# CONFIG_PKG_USING_SGP30 is not set
|
||||
# CONFIG_PKG_USING_HDC1000 is not set
|
||||
# CONFIG_PKG_USING_BMP180 is not set
|
||||
# CONFIG_PKG_USING_BMP280 is not set
|
||||
# CONFIG_PKG_USING_SHTC1 is not set
|
||||
# CONFIG_PKG_USING_BMI088 is not set
|
||||
# CONFIG_PKG_USING_HMC5883 is not set
|
||||
# CONFIG_PKG_USING_MAX6675 is not set
|
||||
# CONFIG_PKG_USING_TMP1075 is not set
|
||||
# CONFIG_PKG_USING_SR04 is not set
|
||||
# CONFIG_PKG_USING_CCS811 is not set
|
||||
# CONFIG_PKG_USING_PMSXX is not set
|
||||
# CONFIG_PKG_USING_RT3020 is not set
|
||||
# CONFIG_PKG_USING_MLX90632 is not set
|
||||
# CONFIG_PKG_USING_MLX90393 is not set
|
||||
# CONFIG_PKG_USING_MLX90392 is not set
|
||||
# CONFIG_PKG_USING_MLX90397 is not set
|
||||
# CONFIG_PKG_USING_MS5611 is not set
|
||||
# CONFIG_PKG_USING_MAX31865 is not set
|
||||
# CONFIG_PKG_USING_VL53L0X is not set
|
||||
# CONFIG_PKG_USING_INA260 is not set
|
||||
# CONFIG_PKG_USING_MAX30102 is not set
|
||||
# CONFIG_PKG_USING_INA226 is not set
|
||||
# CONFIG_PKG_USING_LIS2DH12 is not set
|
||||
# CONFIG_PKG_USING_HS300X is not set
|
||||
# CONFIG_PKG_USING_ZMOD4410 is not set
|
||||
# CONFIG_PKG_USING_ISL29035 is not set
|
||||
# CONFIG_PKG_USING_MMC3680KJ is not set
|
||||
# CONFIG_PKG_USING_QMP6989 is not set
|
||||
# CONFIG_PKG_USING_BALANCE is not set
|
||||
# CONFIG_PKG_USING_SHT2X is not set
|
||||
# CONFIG_PKG_USING_SHT3X is not set
|
||||
# CONFIG_PKG_USING_AD7746 is not set
|
||||
# CONFIG_PKG_USING_ADT74XX is not set
|
||||
# CONFIG_PKG_USING_MAX17048 is not set
|
||||
# CONFIG_PKG_USING_AS7341 is not set
|
||||
# CONFIG_PKG_USING_CW2015 is not set
|
||||
# CONFIG_PKG_USING_ICM20608 is not set
|
||||
# CONFIG_PKG_USING_PAJ7620 is not set
|
||||
|
||||
#
|
||||
# touch drivers
|
||||
#
|
||||
# CONFIG_PKG_USING_GT9147 is not set
|
||||
# CONFIG_PKG_USING_GT1151 is not set
|
||||
# CONFIG_PKG_USING_GT917S is not set
|
||||
# CONFIG_PKG_USING_GT911 is not set
|
||||
# CONFIG_PKG_USING_FT6206 is not set
|
||||
# CONFIG_PKG_USING_FT5426 is not set
|
||||
# CONFIG_PKG_USING_FT6236 is not set
|
||||
# CONFIG_PKG_USING_XPT2046_TOUCH is not set
|
||||
# CONFIG_PKG_USING_REALTEK_AMEBA is not set
|
||||
# CONFIG_PKG_USING_STM32_SDIO is not set
|
||||
# CONFIG_PKG_USING_ESP_IDF is not set
|
||||
# CONFIG_PKG_USING_ICM20608 is not set
|
||||
# CONFIG_PKG_USING_BUTTON is not set
|
||||
# CONFIG_PKG_USING_PCF8574 is not set
|
||||
# CONFIG_PKG_USING_SX12XX is not set
|
||||
@@ -562,12 +644,9 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
||||
# CONFIG_PKG_USING_AGILE_LED is not set
|
||||
# CONFIG_PKG_USING_AT24CXX is not set
|
||||
# CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set
|
||||
# CONFIG_PKG_USING_AD7746 is not set
|
||||
# CONFIG_PKG_USING_PCA9685 is not set
|
||||
# CONFIG_PKG_USING_I2C_TOOLS is not set
|
||||
# CONFIG_PKG_USING_NRF24L01 is not set
|
||||
# CONFIG_PKG_USING_TOUCH_DRIVERS is not set
|
||||
# CONFIG_PKG_USING_MAX17048 is not set
|
||||
# CONFIG_PKG_USING_RPLIDAR is not set
|
||||
# CONFIG_PKG_USING_AS608 is not set
|
||||
# CONFIG_PKG_USING_RC522 is not set
|
||||
@@ -582,7 +661,6 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
||||
# CONFIG_PKG_USING_CAN_YMODEM is not set
|
||||
# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set
|
||||
# CONFIG_PKG_USING_QLED is not set
|
||||
# CONFIG_PKG_USING_PAJ7620 is not set
|
||||
# CONFIG_PKG_USING_AGILE_CONSOLE is not set
|
||||
# CONFIG_PKG_USING_LD3320 is not set
|
||||
# CONFIG_PKG_USING_WK2124 is not set
|
||||
@@ -613,10 +691,11 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
||||
# CONFIG_PKG_USING_BL_MCU_SDK is not set
|
||||
# CONFIG_PKG_USING_SOFT_SERIAL is not set
|
||||
# CONFIG_PKG_USING_MB85RS16 is not set
|
||||
# CONFIG_PKG_USING_CW2015 is not set
|
||||
# CONFIG_PKG_USING_RFM300 is not set
|
||||
# CONFIG_PKG_USING_IO_INPUT_FILTER is not set
|
||||
# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set
|
||||
# CONFIG_PKG_USING_LRF_NV7LIDAR is not set
|
||||
# CONFIG_PKG_USING_FINGERPRINT is not set
|
||||
|
||||
#
|
||||
# AI packages
|
||||
@@ -631,6 +710,12 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
||||
# CONFIG_PKG_USING_QUEST is not set
|
||||
# CONFIG_PKG_USING_NAXOS is not set
|
||||
|
||||
#
|
||||
# Signal Processing and Control Algorithm Packages
|
||||
#
|
||||
# CONFIG_PKG_USING_FIRE_PID_CURVE is not set
|
||||
# CONFIG_PKG_USING_UKAL is not set
|
||||
|
||||
#
|
||||
# miscellaneous packages
|
||||
#
|
||||
@@ -682,7 +767,6 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
||||
# CONFIG_PKG_USING_VI is not set
|
||||
# CONFIG_PKG_USING_KI is not set
|
||||
# CONFIG_PKG_USING_ARMv7M_DWT is not set
|
||||
# CONFIG_PKG_USING_UKAL is not set
|
||||
# CONFIG_PKG_USING_CRCLIB is not set
|
||||
# CONFIG_PKG_USING_LWGPS is not set
|
||||
# CONFIG_PKG_USING_STATE_MACHINE is not set
|
||||
@@ -693,27 +777,165 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
||||
# CONFIG_PKG_USING_SLCAN2RTT is not set
|
||||
# CONFIG_PKG_USING_SOEM is not set
|
||||
# CONFIG_PKG_USING_QPARAM is not set
|
||||
# CONFIG_PKG_USING_CorevMCU_CLI is not set
|
||||
# CONFIG_PKG_USING_GET_IRQ_PRIORITY is not set
|
||||
|
||||
#
|
||||
# Arduino libraries
|
||||
#
|
||||
# CONFIG_PKG_USING_RTDUINO is not set
|
||||
|
||||
#
|
||||
# Projects
|
||||
#
|
||||
# CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_MATLAB_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Sensors
|
||||
#
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSOR is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BUSIO is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AHTX0 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_DHT_SENSOR is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_BMP280 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_LIS3DHTR is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SENSOR_DEVICE_DRIVERS is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_CAPACITIVESENSOR is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL375 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L0X is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L1X is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSOR is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL6180X is not set
|
||||
# CONFIG_PKG_USING_ADAFRUIT_MAX31855 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31865 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31856 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX6675 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90614 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS1 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AHTX0 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS0 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP280 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADT7410 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME680 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9808 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4728 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA219 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR390 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL345 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DHT is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9600 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM6DS is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO055 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX1704X is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMC56X3 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90393 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90395 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ICM20X is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DPS310 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTS221 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT4X is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT31 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL343 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME280 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS726X is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AMG88XX is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2320 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2315 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR329_LTR303 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085_UNIFIED is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183_UNIFIED is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP3XX is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MS8607 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3MDL is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90640 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMA8451 is not set
|
||||
# CONFIG_PKG_USING_ADAFRUIT_MSA301 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL115A2 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X_RVC is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS2MDL is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303DLH_MAG is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LC709203F is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CAP1188 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CCS811 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_NAU7802 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS331 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS2X is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS35HW is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303_ACCEL is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3DH is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8591 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL3115A2 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPR121 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPRLS is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPU6050 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCT2075 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PM25AQI is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_EMC2101 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXAS21002C is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SCD30 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXOS8700 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HMC5883_UNIFIED is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP30 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP006 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TLA202X is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCS34725 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI7021 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI1145 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP40 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHTC3 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HDC1000 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU21DF is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS7341 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU31D is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSORLAB is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA260 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP007_LIBRARY is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_L3GD20 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP117 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSC2007 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2561 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2591_LIBRARY is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VCNL4040 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6070 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6075 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML7700 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_LIS3DHTR is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_DHT is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_ADXL335 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_ADXL345 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_BME280 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_BMP280 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_H3LIS331DL is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_MMA7660 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_TSL2561 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_PAJ7620 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_VL53L0X is not set
|
||||
# CONFIG_PKG_USING_SEEED_ITG3200 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_SHT31 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_HP20X is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_DRV2605L is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_BBM150 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_HMC5883L is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_LSM303DLH is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_TCS3414CS is not set
|
||||
# CONFIG_PKG_USING_SEEED_MP503 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_BMP085 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_HIGHTEMP is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_VEML6070 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_SI1145 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_SHT35 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_AT42QT1070 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_LSM6DS3 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_HDC1000 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_HM3301 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_MCP9600 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_LTC2941 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_LDC1612 is not set
|
||||
|
||||
#
|
||||
# Display
|
||||
#
|
||||
# CONFIG_PKG_USING_ARDUINO_U8G2 is not set
|
||||
# CONFIG_PKG_USING_SEEED_TM1637 is not set
|
||||
|
||||
#
|
||||
# Timing
|
||||
@@ -721,10 +943,47 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
||||
# CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set
|
||||
|
||||
#
|
||||
# Projects
|
||||
# Data Processing
|
||||
#
|
||||
# CONFIG_PKG_USING_ARDUINO_KALMANFILTER is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ARDUINOJSON is not set
|
||||
|
||||
#
|
||||
# Data Storage
|
||||
#
|
||||
|
||||
#
|
||||
# Communication
|
||||
#
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PN532 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI4713 is not set
|
||||
|
||||
#
|
||||
# Device Control
|
||||
#
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8574 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCA9685 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SEEED_PCF85063TP is not set
|
||||
|
||||
#
|
||||
# Other
|
||||
#
|
||||
|
||||
#
|
||||
# Signal IO
|
||||
#
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BUSIO is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCA8418 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP23017 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADS1X15 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AW9523 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP3008 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4725 is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BD3491FS is not set
|
||||
|
||||
#
|
||||
# Uncategorized
|
||||
#
|
||||
# CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set
|
||||
# CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set
|
||||
CONFIG_SOC_FAMILY_STM32=y
|
||||
CONFIG_SOC_SERIES_STM32F4=y
|
||||
|
||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@@ -13,7 +13,6 @@
|
||||
build
|
||||
Debug
|
||||
documentation/html
|
||||
packages/
|
||||
*~
|
||||
*.o
|
||||
*.obj
|
||||
@@ -40,3 +39,4 @@ RTE/
|
||||
settings/
|
||||
*.uvguix*
|
||||
cconfig.h
|
||||
packages/packages.dbsqlite
|
||||
|
89
iap/iap.c
89
iap/iap.c
@@ -116,10 +116,60 @@ rt_err_t port_rx_ind(rt_device_t dev, rt_size_t size)
|
||||
|
||||
#define RT_BUF_SIZE (1024)
|
||||
|
||||
/*
|
||||
* 固件格式:
|
||||
*
|
||||
* 作用 & 说明
|
||||
* - 记录固件对应硬件 & 版本信息
|
||||
* - 简便起见,不包含校验信息
|
||||
*
|
||||
* index len desc
|
||||
* 0 4 'XYFC'
|
||||
* 4 4 固件信息长度
|
||||
* 8 N 固件信息 ('类型'-'版本')
|
||||
* 8+N M 固件数据
|
||||
*/
|
||||
static const char FIXED_HEAD[] = {'X', 'Y', 'F', 'C'};
|
||||
extern const char IAP_BIN_PREFIX[];
|
||||
|
||||
static int _check_head(const rt_uint8_t *buf, rt_size_t len)
|
||||
{
|
||||
if (len < 8)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (int i = 0; i < sizeof(FIXED_HEAD); i++)
|
||||
{
|
||||
if (FIXED_HEAD[i] != buf[i])
|
||||
{
|
||||
return -2;
|
||||
}
|
||||
}
|
||||
|
||||
rt_uint32_t real = *((const rt_uint32_t *)&buf[4]);
|
||||
rt_uint32_t want = rt_strlen(IAP_BIN_PREFIX);
|
||||
if (real <= want || len - 8 < real)
|
||||
{
|
||||
return -3;
|
||||
}
|
||||
|
||||
for(int i = 0; i < want; i++)
|
||||
{
|
||||
if (IAP_BIN_PREFIX[i] != buf[8 + i])
|
||||
{
|
||||
return -4;
|
||||
}
|
||||
}
|
||||
|
||||
return real + 8;
|
||||
}
|
||||
|
||||
struct custom_ctx {
|
||||
struct rym_ctx parent;
|
||||
int32_t file_size;
|
||||
int32_t w_index;
|
||||
int32_t recevied_head;
|
||||
const struct fal_partition *flash;
|
||||
rt_uint8_t ck_buffer[RT_BUF_SIZE];
|
||||
};
|
||||
@@ -167,11 +217,8 @@ static enum rym_code _rym_recv_begin(
|
||||
return RYM_CODE_CAN;
|
||||
}
|
||||
|
||||
if (fal_partition_erase(cctx->flash, 0, cctx->file_size) < 0)
|
||||
{
|
||||
return RYM_CODE_CAN;
|
||||
}
|
||||
cctx->w_index = 0;
|
||||
cctx->recevied_head = 0;
|
||||
|
||||
return RYM_CODE_ACK;
|
||||
}
|
||||
@@ -185,6 +232,23 @@ static enum rym_code _rym_recv_data(
|
||||
RT_ASSERT(cctx);
|
||||
RT_ASSERT(len <= RT_BUF_SIZE);
|
||||
|
||||
int offset = 0;
|
||||
if (cctx->recevied_head == 0)
|
||||
{
|
||||
offset = _check_head(buf, len);
|
||||
if (offset < 0)
|
||||
{
|
||||
return RYM_ERR_FILE;
|
||||
}
|
||||
|
||||
if (fal_partition_erase(cctx->flash, 0, cctx->file_size) < 0)
|
||||
{
|
||||
return RYM_CODE_CAN;
|
||||
}
|
||||
|
||||
cctx->recevied_head = 1;
|
||||
}
|
||||
|
||||
if (cctx->w_index >= cctx->file_size)
|
||||
{
|
||||
return RYM_CODE_ACK;
|
||||
@@ -195,22 +259,22 @@ static enum rym_code _rym_recv_data(
|
||||
len = cctx->file_size - cctx->w_index;
|
||||
}
|
||||
|
||||
if (fal_partition_write(cctx->flash, cctx->w_index, buf, len) <= 0)
|
||||
if (fal_partition_write(cctx->flash, cctx->w_index, &buf[offset], len - offset) <= 0)
|
||||
{
|
||||
return RYM_CODE_CAN;
|
||||
}
|
||||
|
||||
if (fal_partition_read(cctx->flash, cctx->w_index, cctx->ck_buffer, len) <= 0)
|
||||
if (fal_partition_read(cctx->flash, cctx->w_index, cctx->ck_buffer, len - offset) <= 0)
|
||||
{
|
||||
return RYM_CODE_CAN;
|
||||
}
|
||||
|
||||
for (int i = 0; i < len; i++)
|
||||
for (int i = 0; i < len - offset; i++)
|
||||
{
|
||||
if (cctx->ck_buffer[i] != buf[i])
|
||||
if (cctx->ck_buffer[i] != buf[i + offset])
|
||||
return RYM_CODE_CAN;
|
||||
}
|
||||
cctx->w_index += len;
|
||||
cctx->w_index += len - offset;
|
||||
|
||||
return RYM_CODE_ACK;
|
||||
}
|
||||
@@ -309,6 +373,8 @@ int iap_main_entry(void)
|
||||
return _iap_entry(RT_TRUE);
|
||||
}
|
||||
|
||||
#include "shell.h"
|
||||
|
||||
static int _iap_entry(rt_bool_t is_boot)
|
||||
{
|
||||
if (IapAppAddr && is_boot)
|
||||
@@ -316,6 +382,11 @@ static int _iap_entry(rt_bool_t is_boot)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((!IapAppAddr) && is_boot)
|
||||
{
|
||||
finsh_set_prompt("msh (IAP)");
|
||||
}
|
||||
|
||||
rt_err_t err = RT_EOK;
|
||||
struct custom_ctx *ctx = RT_NULL;
|
||||
rt_device_t console = rt_console_get_device();
|
||||
|
12
packages/SConscript
Normal file
12
packages/SConscript
Normal file
@@ -0,0 +1,12 @@
|
||||
import os
|
||||
from building import *
|
||||
|
||||
objs = []
|
||||
cwd = GetCurrentDir()
|
||||
list = os.listdir(cwd)
|
||||
|
||||
for item in list:
|
||||
if os.path.isfile(os.path.join(cwd, item, 'SConscript')):
|
||||
objs = objs + SConscript(os.path.join(item, 'SConscript'))
|
||||
|
||||
Return('objs')
|
7
packages/pkgs.json
Normal file
7
packages/pkgs.json
Normal file
@@ -0,0 +1,7 @@
|
||||
[
|
||||
{
|
||||
"path": "/packages/system/enhanced-kservice/rt_vsnprintf_full",
|
||||
"ver": "latest",
|
||||
"name": "RT_VSNPRINTF_FULL"
|
||||
}
|
||||
]
|
1
packages/pkgs_error.json
Normal file
1
packages/pkgs_error.json
Normal file
@@ -0,0 +1 @@
|
||||
[]
|
59
packages/rt_vsnprintf_full-latest/README.md
Normal file
59
packages/rt_vsnprintf_full-latest/README.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# rt_vsnprintf 完整功能版本
|
||||
|
||||
在RT-Thread的kservice.c源码中的这些函数的实现是为了满足RT-Thread内核的自持能力,即在不依赖标准C库的情况下,RT-Thread核心代码也可以正常运行,因此rt_kprintf、rt_sprintf、rt_snprintf、rt_vsnprintf这类打印函数(或者称之为rt_kprintf家族函数)仅仅满足内核的使用需求,不会实现完整的、和标准C库一致的功能,以减少ROM占用。但是,很多社区小伙伴希望rt_kprintf家族函数可以支持上更多的功能(例如打印浮点数据等等)。因此,本软件包实现了该功能。
|
||||
|
||||
本软件包实现了rt_kprintf家族函数的全功能版本,因为rt_kprintf家族函数的核心功能都是调用rt_vsnprintf函数,因此只需要重新实现rt_vsnprintf函数即可。本软件包基于开源项目[printf](https://github.com/eyalroz/printf)重新实现了rt_vsnprintf,在4.1.0以及以上的RT-Thread版本中,只需要安装本软件包即可。若RT-Thread低于4.1.0版本,需要手动将kservice.c内的rt_vsnprintf函数注释掉,再安装本软件包。
|
||||
|
||||
## 接管标准C库的printf家族函数(仅支持4.1.0及以上版本)
|
||||
本软件包有三个功能宏开关,是否允许本软件包接管printf、sprintf以及snprintf函数,默认为yes,即接管。
|
||||
也就是说,安装本软件包后,即便没有使能libc(RT_USING_LIBC),你可以正常的使用printf、sprintf以及snprintf函数,当你调用这三个函数时,会自动被rt_kprintf、rt_sprintf、rt_snprintf函数接管。你可以正常使用printf家族函数的所有功能。
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
|
||||
printf("hello world\n");
|
||||
```
|
||||
|
||||
## ROM占用
|
||||
GCC下占用8.6KB, Keil下占用8KB。远小于开启标准C库的ROM占用。
|
||||
|
||||
## 如何添加该软件包
|
||||
|
||||
```
|
||||
RT-Thread online packages
|
||||
system packages --->
|
||||
enhanced kernel services --->
|
||||
[*] rt_vsnprintf_full: fully functional version of rt_vsnprintf --->
|
||||
Version (latest) --->
|
||||
```
|
||||
|
||||
- 使用 `RT-Thread Studio` 打开 `RT-Thread Settings`, 点击添加软件包,输入关键字 `printf`, 添加 `rt_vsnprintf_full` 软件包,保存
|
||||
|
||||

|
||||
|
||||
|
||||
- 软件包目录下多出了一个 `rt_vsnprintf_full-latest` 包
|
||||
|
||||

|
||||
|
||||
|
||||
- 打开 rt_vsnprintf.c,发现其中也实现了 rt_vsnprintf
|
||||
|
||||
```c
|
||||
rt_int32_t rt_vsnprintf(char *buf, rt_size_t size, const char *fmt, va_list args)
|
||||
{
|
||||
return __vsnprintf(out_buffer, buf, size, fmt, args);
|
||||
}
|
||||
```
|
||||
|
||||
- 注释掉 kservice.c 中的 rt_vsnprintf **(只针对4.1.0版本以下)**
|
||||
|
||||
- 重新编译并运行 `rt_kprintf ` 和 `LOG_I`, 浮点数打印正常
|
||||

|
||||
|
||||
|
||||
|
||||
## 维护
|
||||
|
||||
[Meco Man](https://github.com/mysterywolf)
|
||||
|
14
packages/rt_vsnprintf_full-latest/SConscript
Normal file
14
packages/rt_vsnprintf_full-latest/SConscript
Normal file
@@ -0,0 +1,14 @@
|
||||
from building import *
|
||||
|
||||
src = ['rt_vsnprintf.c']
|
||||
CPPDEFINES = []
|
||||
|
||||
if GetDepend('RT_VSNPRINTF_FULL_REPLACING_SPRINTF'):
|
||||
CPPDEFINES += ['sprintf=rt_sprintf']
|
||||
if GetDepend('RT_VSNPRINTF_FULL_REPLACING_SNPRINTF'):
|
||||
CPPDEFINES += ['snprintf=rt_snprintf']
|
||||
if GetDepend('RT_VSNPRINTF_FULL_REPLACING_PRINTF'):
|
||||
CPPDEFINES += ['printf=rt_kprintf']
|
||||
|
||||
group = DefineGroup('rt_kprintf', src, depend = ['PKG_USING_RT_VSNPRINTF_FULL'], CPPDEFINES = CPPDEFINES)
|
||||
Return('group')
|
BIN
packages/rt_vsnprintf_full-latest/figures/1.png
Normal file
BIN
packages/rt_vsnprintf_full-latest/figures/1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 43 KiB |
BIN
packages/rt_vsnprintf_full-latest/figures/2.png
Normal file
BIN
packages/rt_vsnprintf_full-latest/figures/2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 37 KiB |
BIN
packages/rt_vsnprintf_full-latest/figures/3.png
Normal file
BIN
packages/rt_vsnprintf_full-latest/figures/3.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 36 KiB |
1101
packages/rt_vsnprintf_full-latest/rt_vsnprintf.c
Normal file
1101
packages/rt_vsnprintf_full-latest/rt_vsnprintf.c
Normal file
File diff suppressed because it is too large
Load Diff
@@ -303,8 +303,8 @@
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_Semaphore.cpp</PathWithFileName>
|
||||
<FilenameWithoutPath>cxx_Semaphore.cpp</FilenameWithoutPath>
|
||||
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_Mutex.cpp</PathWithFileName>
|
||||
<FilenameWithoutPath>cxx_Mutex.cpp</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
@@ -315,20 +315,20 @@
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_Thread.cpp</PathWithFileName>
|
||||
<FilenameWithoutPath>cxx_Thread.cpp</FilenameWithoutPath>
|
||||
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_Semaphore.cpp</PathWithFileName>
|
||||
<FilenameWithoutPath>cxx_Semaphore.cpp</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>11</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_crt_init.c</PathWithFileName>
|
||||
<FilenameWithoutPath>cxx_crt_init.c</FilenameWithoutPath>
|
||||
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_Thread.cpp</PathWithFileName>
|
||||
<FilenameWithoutPath>cxx_Thread.cpp</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
@@ -347,12 +347,12 @@
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>13</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_Mutex.cpp</PathWithFileName>
|
||||
<FilenameWithoutPath>cxx_Mutex.cpp</FilenameWithoutPath>
|
||||
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_crt_init.c</PathWithFileName>
|
||||
<FilenameWithoutPath>cxx_crt_init.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
@@ -683,8 +683,8 @@
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>rt-thread\components\fal\src\fal.c</PathWithFileName>
|
||||
<FilenameWithoutPath>fal.c</FilenameWithoutPath>
|
||||
<PathWithFileName>rt-thread\components\fal\src\fal_partition.c</PathWithFileName>
|
||||
<FilenameWithoutPath>fal_partition.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
@@ -695,23 +695,23 @@
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>rt-thread\components\fal\src\fal_flash.c</PathWithFileName>
|
||||
<FilenameWithoutPath>fal_flash.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>40</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>rt-thread\components\fal\src\fal_rtt.c</PathWithFileName>
|
||||
<FilenameWithoutPath>fal_rtt.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>40</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>rt-thread\components\fal\src\fal.c</PathWithFileName>
|
||||
<FilenameWithoutPath>fal.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>41</FileNumber>
|
||||
@@ -719,8 +719,8 @@
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>rt-thread\components\fal\src\fal_partition.c</PathWithFileName>
|
||||
<FilenameWithoutPath>fal_partition.c</FilenameWithoutPath>
|
||||
<PathWithFileName>rt-thread\components\fal\src\fal_flash.c</PathWithFileName>
|
||||
<FilenameWithoutPath>fal_flash.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
@@ -784,7 +784,7 @@
|
||||
|
||||
<Group>
|
||||
<GroupName>IAP</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
@@ -1251,7 +1251,7 @@
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
<GroupName>Utilities</GroupName>
|
||||
<GroupName>rt_kprintf</GroupName>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
@@ -1263,14 +1263,34 @@
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>packages\rt_vsnprintf_full-latest\rt_vsnprintf.c</PathWithFileName>
|
||||
<FilenameWithoutPath>rt_vsnprintf.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
<GroupName>Utilities</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>12</GroupNumber>
|
||||
<FileNumber>84</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>rt-thread\components\utilities\ulog\backend\console_be.c</PathWithFileName>
|
||||
<FilenameWithoutPath>console_be.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>11</GroupNumber>
|
||||
<FileNumber>84</FileNumber>
|
||||
<GroupNumber>12</GroupNumber>
|
||||
<FileNumber>85</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1281,8 +1301,8 @@
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>11</GroupNumber>
|
||||
<FileNumber>85</FileNumber>
|
||||
<GroupNumber>12</GroupNumber>
|
||||
<FileNumber>86</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
|
@@ -82,7 +82,7 @@
|
||||
<AfterMake>
|
||||
<RunUserProg1>1</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name>move_lib.bat</UserProg1Name>
|
||||
<UserProg1Name>E:\xyfc\413\work\stm32f413\move_lib.bat</UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
@@ -428,6 +428,11 @@
|
||||
<Group>
|
||||
<GroupName>CPlusPlus</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>cxx_Mutex.cpp</FileName>
|
||||
<FileType>8</FileType>
|
||||
<FilePath>rt-thread\components\libc\cplusplus\cxx_Mutex.cpp</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>cxx_Semaphore.cpp</FileName>
|
||||
<FileType>8</FileType>
|
||||
@@ -438,20 +443,15 @@
|
||||
<FileType>8</FileType>
|
||||
<FilePath>rt-thread\components\libc\cplusplus\cxx_Thread.cpp</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>cxx_crt_init.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>rt-thread\components\libc\cplusplus\cxx_crt_init.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>cxx_crt.cpp</FileName>
|
||||
<FileType>8</FileType>
|
||||
<FilePath>rt-thread\components\libc\cplusplus\cxx_crt.cpp</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>cxx_Mutex.cpp</FileName>
|
||||
<FileType>8</FileType>
|
||||
<FilePath>rt-thread\components\libc\cplusplus\cxx_Mutex.cpp</FilePath>
|
||||
<FileName>cxx_crt_init.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>rt-thread\components\libc\cplusplus\cxx_crt_init.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
@@ -593,6 +593,16 @@
|
||||
<Group>
|
||||
<GroupName>Fal</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>fal_partition.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>rt-thread\components\fal\src\fal_partition.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>fal_rtt.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>rt-thread\components\fal\src\fal_rtt.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>fal.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
@@ -603,16 +613,6 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>rt-thread\components\fal\src\fal_flash.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>fal_rtt.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>rt-thread\components\fal\src\fal_rtt.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>fal_partition.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>rt-thread\components\fal\src\fal_partition.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
@@ -840,6 +840,16 @@
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>rt_kprintf</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>rt_vsnprintf.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>packages\rt_vsnprintf_full-latest\rt_vsnprintf.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>Utilities</GroupName>
|
||||
<Files>
|
||||
|
@@ -645,501 +645,6 @@ void rt_show_version(void)
|
||||
}
|
||||
RTM_EXPORT(rt_show_version);
|
||||
|
||||
/* private function */
|
||||
#define _ISDIGIT(c) ((unsigned)((c) - '0') < 10)
|
||||
|
||||
/**
|
||||
* This function will duplicate a string.
|
||||
*
|
||||
* @param n is the string to be duplicated.
|
||||
*
|
||||
* @param base is support divide instructions value.
|
||||
*
|
||||
* @return the duplicated string pointer.
|
||||
*/
|
||||
#ifdef RT_KPRINTF_USING_LONGLONG
|
||||
rt_inline int divide(long long *n, int base)
|
||||
#else
|
||||
rt_inline int divide(long *n, int base)
|
||||
#endif /* RT_KPRINTF_USING_LONGLONG */
|
||||
{
|
||||
int res;
|
||||
|
||||
/* optimized for processor which does not support divide instructions. */
|
||||
#ifdef RT_KPRINTF_USING_LONGLONG
|
||||
res = (int)(((unsigned long long)*n) % base);
|
||||
*n = (long long)(((unsigned long long)*n) / base);
|
||||
#else
|
||||
res = (int)(((unsigned long)*n) % base);
|
||||
*n = (long)(((unsigned long)*n) / base);
|
||||
#endif
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
rt_inline int skip_atoi(const char **s)
|
||||
{
|
||||
int i = 0;
|
||||
while (_ISDIGIT(**s))
|
||||
i = i * 10 + *((*s)++) - '0';
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
#define ZEROPAD (1 << 0) /* pad with zero */
|
||||
#define SIGN (1 << 1) /* unsigned/signed long */
|
||||
#define PLUS (1 << 2) /* show plus */
|
||||
#define SPACE (1 << 3) /* space if plus */
|
||||
#define LEFT (1 << 4) /* left justified */
|
||||
#define SPECIAL (1 << 5) /* 0x */
|
||||
#define LARGE (1 << 6) /* use 'ABCDEF' instead of 'abcdef' */
|
||||
|
||||
static char *print_number(char *buf,
|
||||
char *end,
|
||||
#ifdef RT_KPRINTF_USING_LONGLONG
|
||||
long long num,
|
||||
#else
|
||||
long num,
|
||||
#endif /* RT_KPRINTF_USING_LONGLONG */
|
||||
int base,
|
||||
int s,
|
||||
#ifdef RT_PRINTF_PRECISION
|
||||
int precision,
|
||||
#endif /* RT_PRINTF_PRECISION */
|
||||
int type)
|
||||
{
|
||||
char c, sign;
|
||||
#ifdef RT_KPRINTF_USING_LONGLONG
|
||||
char tmp[64];
|
||||
#else
|
||||
char tmp[32];
|
||||
#endif /* RT_KPRINTF_USING_LONGLONG */
|
||||
int precision_bak = precision;
|
||||
const char *digits;
|
||||
static const char small_digits[] = "0123456789abcdef";
|
||||
static const char large_digits[] = "0123456789ABCDEF";
|
||||
int i, size;
|
||||
|
||||
size = s;
|
||||
|
||||
digits = (type & LARGE) ? large_digits : small_digits;
|
||||
if (type & LEFT)
|
||||
type &= ~ZEROPAD;
|
||||
|
||||
c = (type & ZEROPAD) ? '0' : ' ';
|
||||
|
||||
/* get sign */
|
||||
sign = 0;
|
||||
if (type & SIGN)
|
||||
{
|
||||
if (num < 0)
|
||||
{
|
||||
sign = '-';
|
||||
num = -num;
|
||||
}
|
||||
else if (type & PLUS)
|
||||
sign = '+';
|
||||
else if (type & SPACE)
|
||||
sign = ' ';
|
||||
}
|
||||
|
||||
#ifdef RT_PRINTF_SPECIAL
|
||||
if (type & SPECIAL)
|
||||
{
|
||||
if (base == 2 || base == 16)
|
||||
size -= 2;
|
||||
else if (base == 8)
|
||||
size--;
|
||||
}
|
||||
#endif /* RT_PRINTF_SPECIAL */
|
||||
|
||||
i = 0;
|
||||
if (num == 0)
|
||||
tmp[i++] = '0';
|
||||
else
|
||||
{
|
||||
while (num != 0)
|
||||
tmp[i++] = digits[divide(&num, base)];
|
||||
}
|
||||
|
||||
#ifdef RT_PRINTF_PRECISION
|
||||
if (i > precision)
|
||||
precision = i;
|
||||
size -= precision;
|
||||
#else
|
||||
size -= i;
|
||||
#endif /* RT_PRINTF_PRECISION */
|
||||
|
||||
if (!(type & (ZEROPAD | LEFT)))
|
||||
{
|
||||
if ((sign) && (size > 0))
|
||||
size--;
|
||||
|
||||
while (size-- > 0)
|
||||
{
|
||||
if (buf < end)
|
||||
*buf = ' ';
|
||||
++ buf;
|
||||
}
|
||||
}
|
||||
|
||||
if (sign)
|
||||
{
|
||||
if (buf < end)
|
||||
{
|
||||
*buf = sign;
|
||||
}
|
||||
-- size;
|
||||
++ buf;
|
||||
}
|
||||
|
||||
#ifdef RT_PRINTF_SPECIAL
|
||||
if (type & SPECIAL)
|
||||
{
|
||||
if (base == 2)
|
||||
{
|
||||
if (buf < end)
|
||||
*buf = '0';
|
||||
++ buf;
|
||||
if (buf < end)
|
||||
*buf = 'b';
|
||||
++ buf;
|
||||
}
|
||||
else if (base == 8)
|
||||
{
|
||||
if (buf < end)
|
||||
*buf = '0';
|
||||
++ buf;
|
||||
}
|
||||
else if (base == 16)
|
||||
{
|
||||
if (buf < end)
|
||||
*buf = '0';
|
||||
++ buf;
|
||||
if (buf < end)
|
||||
{
|
||||
*buf = type & LARGE ? 'X' : 'x';
|
||||
}
|
||||
++ buf;
|
||||
}
|
||||
}
|
||||
#endif /* RT_PRINTF_SPECIAL */
|
||||
|
||||
/* no align to the left */
|
||||
if (!(type & LEFT))
|
||||
{
|
||||
while (size-- > 0)
|
||||
{
|
||||
if (buf < end)
|
||||
*buf = c;
|
||||
++ buf;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef RT_PRINTF_PRECISION
|
||||
while (i < precision--)
|
||||
{
|
||||
if (buf < end)
|
||||
*buf = '0';
|
||||
++ buf;
|
||||
}
|
||||
#endif /* RT_PRINTF_PRECISION */
|
||||
|
||||
/* put number in the temporary buffer */
|
||||
while (i-- > 0 && (precision_bak != 0))
|
||||
{
|
||||
if (buf < end)
|
||||
*buf = tmp[i];
|
||||
++ buf;
|
||||
}
|
||||
|
||||
while (size-- > 0)
|
||||
{
|
||||
if (buf < end)
|
||||
*buf = ' ';
|
||||
++ buf;
|
||||
}
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function will fill a formatted string to buffer.
|
||||
*
|
||||
* @param buf is the buffer to save formatted string.
|
||||
*
|
||||
* @param size is the size of buffer.
|
||||
*
|
||||
* @param fmt is the format parameters.
|
||||
*
|
||||
* @param args is a list of variable parameters.
|
||||
*
|
||||
* @return The number of characters actually written to buffer.
|
||||
*/
|
||||
RT_WEAK int rt_vsnprintf(char *buf, rt_size_t size, const char *fmt, va_list args)
|
||||
{
|
||||
#ifdef RT_KPRINTF_USING_LONGLONG
|
||||
unsigned long long num;
|
||||
#else
|
||||
rt_uint32_t num;
|
||||
#endif /* RT_KPRINTF_USING_LONGLONG */
|
||||
int i, len;
|
||||
char *str, *end, c;
|
||||
const char *s;
|
||||
|
||||
rt_uint8_t base; /* the base of number */
|
||||
rt_uint8_t flags; /* flags to print number */
|
||||
rt_uint8_t qualifier; /* 'h', 'l', or 'L' for integer fields */
|
||||
rt_int32_t field_width; /* width of output field */
|
||||
|
||||
#ifdef RT_PRINTF_PRECISION
|
||||
int precision; /* min. # of digits for integers and max for a string */
|
||||
#endif /* RT_PRINTF_PRECISION */
|
||||
|
||||
str = buf;
|
||||
end = buf + size;
|
||||
|
||||
/* Make sure end is always >= buf */
|
||||
if (end < buf)
|
||||
{
|
||||
end = ((char *) - 1);
|
||||
size = end - buf;
|
||||
}
|
||||
|
||||
for (; *fmt ; ++fmt)
|
||||
{
|
||||
if (*fmt != '%')
|
||||
{
|
||||
if (str < end)
|
||||
*str = *fmt;
|
||||
++ str;
|
||||
continue;
|
||||
}
|
||||
|
||||
/* process flags */
|
||||
flags = 0;
|
||||
|
||||
while (1)
|
||||
{
|
||||
/* skips the first '%' also */
|
||||
++ fmt;
|
||||
if (*fmt == '-') flags |= LEFT;
|
||||
else if (*fmt == '+') flags |= PLUS;
|
||||
else if (*fmt == ' ') flags |= SPACE;
|
||||
else if (*fmt == '#') flags |= SPECIAL;
|
||||
else if (*fmt == '0') flags |= ZEROPAD;
|
||||
else break;
|
||||
}
|
||||
|
||||
/* get field width */
|
||||
field_width = -1;
|
||||
if (_ISDIGIT(*fmt)) field_width = skip_atoi(&fmt);
|
||||
else if (*fmt == '*')
|
||||
{
|
||||
++ fmt;
|
||||
/* it's the next argument */
|
||||
field_width = va_arg(args, int);
|
||||
if (field_width < 0)
|
||||
{
|
||||
field_width = -field_width;
|
||||
flags |= LEFT;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef RT_PRINTF_PRECISION
|
||||
/* get the precision */
|
||||
precision = -1;
|
||||
if (*fmt == '.')
|
||||
{
|
||||
++ fmt;
|
||||
if (_ISDIGIT(*fmt)) precision = skip_atoi(&fmt);
|
||||
else if (*fmt == '*')
|
||||
{
|
||||
++ fmt;
|
||||
/* it's the next argument */
|
||||
precision = va_arg(args, int);
|
||||
}
|
||||
if (precision < 0) precision = 0;
|
||||
}
|
||||
#endif /* RT_PRINTF_PRECISION */
|
||||
/* get the conversion qualifier */
|
||||
qualifier = 0;
|
||||
#ifdef RT_KPRINTF_USING_LONGLONG
|
||||
if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L')
|
||||
#else
|
||||
if (*fmt == 'h' || *fmt == 'l')
|
||||
#endif /* RT_KPRINTF_USING_LONGLONG */
|
||||
{
|
||||
qualifier = *fmt;
|
||||
++ fmt;
|
||||
#ifdef RT_KPRINTF_USING_LONGLONG
|
||||
if (qualifier == 'l' && *fmt == 'l')
|
||||
{
|
||||
qualifier = 'L';
|
||||
++ fmt;
|
||||
}
|
||||
#endif /* RT_KPRINTF_USING_LONGLONG */
|
||||
}
|
||||
|
||||
/* the default base */
|
||||
base = 10;
|
||||
|
||||
switch (*fmt)
|
||||
{
|
||||
case 'c':
|
||||
if (!(flags & LEFT))
|
||||
{
|
||||
while (--field_width > 0)
|
||||
{
|
||||
if (str < end) *str = ' ';
|
||||
++ str;
|
||||
}
|
||||
}
|
||||
|
||||
/* get character */
|
||||
c = (rt_uint8_t)va_arg(args, int);
|
||||
if (str < end) *str = c;
|
||||
++ str;
|
||||
|
||||
/* put width */
|
||||
while (--field_width > 0)
|
||||
{
|
||||
if (str < end) *str = ' ';
|
||||
++ str;
|
||||
}
|
||||
continue;
|
||||
|
||||
case 's':
|
||||
s = va_arg(args, char *);
|
||||
if (!s) s = "(NULL)";
|
||||
|
||||
for (len = 0; (len != field_width) && (s[len] != '\0'); len++);
|
||||
#ifdef RT_PRINTF_PRECISION
|
||||
if (precision > 0 && len > precision) len = precision;
|
||||
#endif /* RT_PRINTF_PRECISION */
|
||||
|
||||
if (!(flags & LEFT))
|
||||
{
|
||||
while (len < field_width--)
|
||||
{
|
||||
if (str < end) *str = ' ';
|
||||
++ str;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < len; ++i)
|
||||
{
|
||||
if (str < end) *str = *s;
|
||||
++ str;
|
||||
++ s;
|
||||
}
|
||||
|
||||
while (len < field_width--)
|
||||
{
|
||||
if (str < end) *str = ' ';
|
||||
++ str;
|
||||
}
|
||||
continue;
|
||||
|
||||
case 'p':
|
||||
if (field_width == -1)
|
||||
{
|
||||
field_width = sizeof(void *) << 1;
|
||||
flags |= ZEROPAD;
|
||||
}
|
||||
#ifdef RT_PRINTF_PRECISION
|
||||
str = print_number(str, end,
|
||||
(long)va_arg(args, void *),
|
||||
16, field_width, precision, flags);
|
||||
#else
|
||||
str = print_number(str, end,
|
||||
(long)va_arg(args, void *),
|
||||
16, field_width, flags);
|
||||
#endif /* RT_PRINTF_PRECISION */
|
||||
continue;
|
||||
|
||||
case '%':
|
||||
if (str < end) *str = '%';
|
||||
++ str;
|
||||
continue;
|
||||
|
||||
/* integer number formats - set up the flags and "break" */
|
||||
case 'b':
|
||||
base = 2;
|
||||
break;
|
||||
case 'o':
|
||||
base = 8;
|
||||
break;
|
||||
|
||||
case 'X':
|
||||
flags |= LARGE;
|
||||
case 'x':
|
||||
base = 16;
|
||||
break;
|
||||
|
||||
case 'd':
|
||||
case 'i':
|
||||
flags |= SIGN;
|
||||
case 'u':
|
||||
break;
|
||||
|
||||
default:
|
||||
if (str < end) *str = '%';
|
||||
++ str;
|
||||
|
||||
if (*fmt)
|
||||
{
|
||||
if (str < end) *str = *fmt;
|
||||
++ str;
|
||||
}
|
||||
else
|
||||
{
|
||||
-- fmt;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
#ifdef RT_KPRINTF_USING_LONGLONG
|
||||
if (qualifier == 'L') num = va_arg(args, long long);
|
||||
else if (qualifier == 'l')
|
||||
#else
|
||||
if (qualifier == 'l')
|
||||
#endif /* RT_KPRINTF_USING_LONGLONG */
|
||||
{
|
||||
num = va_arg(args, rt_uint32_t);
|
||||
if (flags & SIGN) num = (rt_int32_t)num;
|
||||
}
|
||||
else if (qualifier == 'h')
|
||||
{
|
||||
num = (rt_uint16_t)va_arg(args, int);
|
||||
if (flags & SIGN) num = (rt_int16_t)num;
|
||||
}
|
||||
else
|
||||
{
|
||||
num = va_arg(args, rt_uint32_t);
|
||||
if (flags & SIGN) num = (rt_int32_t)num;
|
||||
}
|
||||
#ifdef RT_PRINTF_PRECISION
|
||||
str = print_number(str, end, num, base, field_width, precision, flags);
|
||||
#else
|
||||
str = print_number(str, end, num, base, field_width, flags);
|
||||
#endif /* RT_PRINTF_PRECISION */
|
||||
}
|
||||
|
||||
if (size > 0)
|
||||
{
|
||||
if (str < end) *str = '\0';
|
||||
else
|
||||
{
|
||||
end[-1] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
/* the trailing null byte doesn't count towards the total
|
||||
* ++str;
|
||||
*/
|
||||
return str - buf;
|
||||
}
|
||||
RTM_EXPORT(rt_vsnprintf);
|
||||
|
||||
/**
|
||||
|
32
rtconfig.h
32
rtconfig.h
@@ -124,6 +124,7 @@
|
||||
|
||||
/* log format */
|
||||
|
||||
#define ULOG_OUTPUT_FLOAT
|
||||
#define ULOG_USING_COLOR
|
||||
#define ULOG_OUTPUT_TIME
|
||||
#define ULOG_OUTPUT_LEVEL
|
||||
@@ -175,6 +176,8 @@
|
||||
|
||||
/* enhanced kernel services */
|
||||
|
||||
#define PKG_USING_RT_VSNPRINTF_FULL
|
||||
#define PKG_USING_RT_VSNPRINTF_FULL_LATEST_VERSION
|
||||
|
||||
/* acceleration: Assembly language or algorithmic acceleration packages */
|
||||
|
||||
@@ -187,6 +190,11 @@
|
||||
|
||||
/* peripheral libraries and drivers */
|
||||
|
||||
/* sensors drivers */
|
||||
|
||||
|
||||
/* touch drivers */
|
||||
|
||||
|
||||
/* Kendryte SDK */
|
||||
|
||||
@@ -194,6 +202,9 @@
|
||||
/* AI packages */
|
||||
|
||||
|
||||
/* Signal Processing and Control Algorithm Packages */
|
||||
|
||||
|
||||
/* miscellaneous packages */
|
||||
|
||||
/* project laboratory */
|
||||
@@ -207,6 +218,9 @@
|
||||
/* Arduino libraries */
|
||||
|
||||
|
||||
/* Projects */
|
||||
|
||||
|
||||
/* Sensors */
|
||||
|
||||
|
||||
@@ -216,7 +230,23 @@
|
||||
/* Timing */
|
||||
|
||||
|
||||
/* Projects */
|
||||
/* Data Processing */
|
||||
|
||||
|
||||
/* Data Storage */
|
||||
|
||||
/* Communication */
|
||||
|
||||
|
||||
/* Device Control */
|
||||
|
||||
|
||||
/* Other */
|
||||
|
||||
/* Signal IO */
|
||||
|
||||
|
||||
/* Uncategorized */
|
||||
|
||||
#define SOC_FAMILY_STM32
|
||||
#define SOC_SERIES_STM32F4
|
||||
|
Reference in New Issue
Block a user