Skip to content

로그 프로토콜

LUFT-AQUILA edited this page Jul 31, 2024 · 12 revisions

TMA-1이 기록하는 로그는 16 byte Little Endian 규격으로 이루어져 있습니다.

timestamp

TMA-1에 전원이 공급된 시점으로부터 경과된 ms 단위의 시간입니다.

level

로그의 레벨입니다. 다음 값을 가질 수 있습니다.

Level value
FATAL 0
ERROR 1
WARN 2
INFO 3
DEBUG 4

source & key

로그를 발생시킨 장비와 로그의 종류입니다. 다음 값을 가질 수 있습니다.

Source value Key value parsed
SYS 0 SYS_SD_INIT 0
SYS_CORE_INIT 1
SYS_SERIAL_INIT 2
SYS_TELEMETRY_REMOTE 3
SYS_TELEMETRY_INIT 4
CAN_INIT 5
DIGITAL_INIT 6
ANALOG_INIT 7
PULSE_INIT 8
ACCELEROMETER_INIT 9
GPS_INIT 10
SYS_READY 11
SYS_RTC_FIX 12
SYS_SD_FAIL 13
CAN_ERR_CANERR 14
CAN_ERR_RXMSGFAIL 15
CAN_ERR_FIFOFULL 16
CAN 1 CAN MSG ID & 0xFF CAN MSG data
DIGITAL 2 DIGITAL_DATA 0 DIN0 DIN1 DIN2 DIN3
DIN4 DIN5 DIN6 DIN7
ANALOG 3 ANALOG_SYS 0 CPU_TEMP INPUT_VOLTAGE
ANALOG_DATA 1 AIN0 AIN1 AIN2 AIN3
PULSE 4 PULSE_DATA 0 PIN0 PIN1 PIN2 PIN3
ACCELEROMETER 5 ACCELEROMETER_DATA 0 x y z
GPS 6 GPS_POS 0 lat lon
GPS_VEC 1 speed course
GPS_TIME 2 utc_date utc_time

checksum

로그의 유효성을 검증하는 체크섬입니다.

자신을 제외한 나머지 15개 바이트를 모두 더한 합을 0xFF와 AND 연산한 값입니다.

value

해당 로그에 저장된 8바이트 데이터입니다.

SYS

SYS_SD_INIT

SD 카드 초기화 기록입니다.

value data
0 success
other FatFs FRESULT

SYS_CORE_INIT

TMA-1 코어 시스템(LED, RTC 동기화 인터럽트) 초기화 기록입니다.

value data
0 success

SYS_SERIAL_INIT

TMA-1 시리얼 로그 출력 버퍼 초기화 기록입니다.

value data
0 success

SYS_TELEMETRY_REMOTE

TMA-2 텔레메트리 서버와 연결된 기록입니다.

value data
0 server disconnected
1 server connected

SYS_TELEMETRY_INIT

STM32가 ESP32와 handshake를 수행한 기록입니다.

value data
0 success
1 ESP not found
2 ESP I2C not ready
3 ESP handshake error
4 ESP handshake ruined

CAN_INIT

CAN peripheral 초기화 기록입니다.

value data
0 success
1 filter config fail
2 CAN start fail
3 FIFO MSG pending notification activation fail
4 FIFO full notification activation fail
5 FIFO overrun notification activation fail
6 BUSOFF notification activation fail
7 ERROR notification activation fail

DIGITAL_INIT

디지털 입력 채널 초기화 기록입니다.

value data
0 success

ANALOG_INIT

아날로그 입력 채널 초기화 기록입니다.

value data
0 success

PULSE_INIT

디지털 파형 주기 측정 채널 초기화 기록입니다.

value data
0 success

ACCELEROMETER_INIT

가속도 센서 초기화 기록입니다.

value data
0 success
1 error
2 busy
3 timeout

GPS_INIT

GPS 모듈 초기화 기록입니다.

value data
0 success

SYS_READY

시스템 초기화 완료 기록입니다.

value data
0 success

SYS_RTC_FIX

TMA-1의 RTC 시간을 실제 시간과 동기화한 기록입니다.

byte data
#0 Year
#1 Month
#2 Date
#3 Hours
#4 Minutes
#5 Seconds
#6 source
0: UART
1: TELEMETRY

SYS_SD_FAIL

TMA-1이 장비의 SD 카드를 mount / open / write / sync 하는 중에 실패한 기록입니다.

value data
0 not specified

CAN_ERR_CANERR

CAN 버스 에러가 발생한 기록입니다.

value data
0 not specified

CAN_ERR_RXMSGFAIL

TMA-1이 CAN 버스로부터 메시지를 읽어오는데 실패한 기록입니다.

value data
0 not specified

CAN_ERR_FIFOFULL

TMA-1의 CAN RX FIFO가 가득찬 기록입니다.

value data
0 not specified

CAN

CAN 메시지 ID가 key로 저장됩니다. key가 1 byte인 관계로, 메시지 ID의 하위 8 bit만 저장됩니다. 참고: CAN 트래픽 모니터링

즉, source가 CAN인 로그의 key는 CAN 메시지 ID & 0xFF 입니다.

DIGITAL

DIGITAL_DATA

디지털 채널 레코드입니다. 100ms마다 한 번씩 기록합니다.

각 바이트가 0이면 해당 채널이 OFF, 1이면 ON인 상태입니다.

byte data
#0 DIN0
#1 DIN1
#2 DIN2
#3 DIN3
#4 DIN4
#5 DIN5
#6 DIN6
#7 DIN7

ANALOG

ANALOG_SYS

시스템 아날로그 레코드입니다. 코어 온도와 전원 전압을 1s마다 한 번씩 기록합니다.

byte data
#0 ~ #1 STM32F4 코어 온도 * 10
#2 ~ #3 VIN 입력 전압 / 8 / 3.3 * 4096

ANALOG_DATA

아날로그 채널 레코드입니다. 100ms마다 한 번씩 기록합니다.

ADC 해상도는 12 bit입니다. 로그의 각 채널은 0 ~ 4095의 값을 저장합니다.

PCB의 ANALOG 영역에 장착한 전압 분배 저항에 따라 기록되는 값이 달라집니다.

분배된 전압이 3.3V일 때 4095가 기록됩니다.

byte data
#0 ~ #1 AIN0
#2 ~ #3 AIN1
#4 ~ #5 AIN2
#6 ~ #7 AIN3

PULSE

PULSE_DATA

디지털 파형 주기 측정 채널 레코드입니다.

100ms마다 한 번씩 측정이 활성화되며, 4개 채널 모두에서 2개 이상의 rising edge가 검출되었을 때 로그가 기록됩니다.

각 채널에서의 두 rising edge 사이의 간격이 microsecond 단위로 기록됩니다.

byte data
#0 ~ #1 PIN0
#2 ~ #3 PIN1
#4 ~ #5 PIN2
#6 ~ #7 PIN3

ACCELEROMETER

ACCELEROMETER_DATA

가속도 측정 레코드입니다. 100ms마다 한 번씩 기록됩니다.

각 축 가속도 * 4 / 512 가 실제 g 단위 가속도입니다.

byte data
#0 ~ #1 x축 가속도
#2 ~ #3 y축 가속도
#4 ~ #5 z축 가속도

GPS

모든 GPS 로그는 유효한 GPS 위치 정보가 수신되었을 때만 기록됩니다. 100ms 간격으로 기록됩니다.

GPS_POS

GPS 위치 정보 레코드입니다.

각 좌표값은 NMEA 좌표 데이터 * 10000 입니다. NMEA 좌표 데이터에서 소수점을 제거한 값과 동일합니다.

byte data
#0 ~ #3 latitude
#4 ~ #7 longitude

GPS_VEC

GPS 속도 및 방향 정보 레코드입니다.

byte data
#0 ~ #3 speed(knots * 100)
#4 ~ #7 course angle(to true north)

GPS_TIME

GPS 위성 시간 레코드입니다.

byte data
#0 ~ #3 date(mmddyy)
#4 ~ #7 time(hhmmss)