src.dualinventive.com/mtinfo/tcpserver/legacy/common/include/zkl-log.h

509 lines
25 KiB
C
Executable File
Raw Permalink Blame History

/*
************************************************************************
**
** Copyright (c) 2007..2014 by
** Core|Vision B.V.
** Cereslaan 10b
** 5384 VT Heesch
** The Netherlands
**
** All Rights Reserved
**
************************************************************************
*/
/*
************************************************************************
**
** Project name: Dual Inventive: Zelfsignalerende Kortsluit Lans
** Filename: zkl-log.h
** Author: Jack Weeland
** Date: April 7, 2008
** File version: 1.00 of March 16, 2007
** :
** 1.15 of April 7, 2008
**
************************************************************************
*/
/*
************************************************************************
**
** Logging identifiers
**
************************************************************************
*/
#ifndef _COMMON_ZKL_LOG_H
#define _COMMON_ZKL_LOG_H
//
// Log identifiers with optional parameters
//
// Major logging identifiers (4-bit + 12-bit timestamp = 2 bytes)
// Timestamp is formatted as (hour * 100 + minute)
// id extra description parameter id and parameters
// bytes
// -- ----- ------------------------ ---------------------------------------
// 0 2 system 0x0000 shutdown
// 8 other start-up
// system version (1 byte major)
// system version (1 byte minor)
// start-up count (2 bytes)
// flags (2 bytes)
// RCON register (2 bytes)
// 1 measurement start
// 2 measurement end
// 3 short circuit detected
// 4 short circuit _not_ detected
// 5 1 measurement exception 0x00 suspend
// 0x2x relay open/closed
// 5 1+n measurement details 0x10 measurement details
// max_sample (2 bytes)
// b/a (2 bytes in 0.16 format)
// 0x11 frequency sweep begin (both values 0)
// or end (both not zero); also used to
// log the PWM period (first value 0)
// max_sample (2 bytes)
// pwm_period (2 bytes)
// 0x12 measurement average sample value
// v_reference (2 bytes)
// v_measure (2 bytes)
// 1 0x22 auto-calibration start
// 1+2 0x23 auto-calibration end (new detection threshold)
// 0x80 v_reference raw samples
// count (2 bytes)
// samples (count x 2 bytes)
// 0x81 v_measure raw samples
// count (2 bytes)
// samples (count x 2 bytes)
// 0x82 v_reference filtered samples
// count (2 bytes)
// samples (count x 2 bytes)
// 0x83 v_measure filtered samples
// count (2 bytes)
// samples (count x 2 bytes)
// 6 1+1+2 battery state 0x00 battery "alarm"
// 0x01 battery "empty"
// 0x02 battery "recovered"
// 0x03 battery "absent"
// 0x10 battery level
// 0x11 battery selection
// 0x12 battery selection error
// 0x13 battery "alarm" level
// battery (1 byte)
// level (2 bytes, ADC reading)
// 0x80 battery age
// battery (1 byte)
// age in minutes (2 bytes)
// 7 3 user switch state 0x0x measurement on/off switch
// 0x1x led intensity switch
// 0x2x lantern switch
// 0x3x auto-calibration
// 0x4x external contact
// 0x5x gps power (5V)
// 0x6x relay driver
// 0xx0 button pressed
// 0xx1 button released
// 0x80 + when orred with one of the above: set externally
// 8 1+n gsm state 0x00 subsystem activated
// 0x01 modem found
// baud_rate (2 bytes; BRG value)
// 0x02 modem command error
// len (1 byte, length of "str")
// str ("len" bytes)
// 0x03 modem command okay
// len (1 byte, length of "str")
// str ("len" bytes)
// 0xF0 transmit details
// len (1 byte, length of "str")
// str ("len" bytes)
// 0xF1 receive details
// len (1 byte, length of "str")
// str ("len" bytes)
// 9 1+n sms subsystem 0x00 subsystem start
// 0x10 compose sms
// msg_t (2 bytes)
// 0x11 compose sms error
// msg_t (2 bytes, also a 8,0x02 error)
// 0x20 sms in store
// id (2 bytes)
// da_len (1 byte, length of "da_str")
// da_str ("len" bytes; destination address)
// 0x21 sms sent
// id (2 bytes)
// 0x30 sms received
// id (2 bytes)
// oa_len (1 byte, length of "oa_str")
// oa_str ("oa_len" bytes; originator address)
// 0x31 status request
// id (2 bytes)
// 0x32 configuration modified
// id (2 bytes)
// len (2 bytes, length of "str")
// str ("len" bytes; message text)
// 0x3E details
// id (2 bytes)
// len (2 bytes, length of "str")
// str ("len" bytes; message text)
// 0x3F unrecognised message
// id (2 bytes)
// len (2 bytes, length of "str")
// str ("len" bytes; message text)
// A 1+n logging subsystem 0x00 system start-up
// 0x10 I2C error
// 0x20 uALFAT error
// code result code
// 0x21 log file error
// code result code
// 0x22 index file error
// code result code
// 0x30, 0x40, 0x50, 0x60, 0x70
// code result code
// 0xF0 uALFAT command
// cmd_str (string; command)
// rpl_str (1 byte: reply)
// B 1 gps subsystem 0x00 disable (power removed)
// 0x01 enable (power applied)
// 1+n tcp 0x10 TCP server connected
// success or error (2 bytes, signed integer)
// peer (string, the tcp-server)
// 1+4+1+n geofence design 0x80 new design (int id, int #objects, str + length)
// 1+11 geofence object 0x81 new object (int id, int object, byte type, int #points, float radius)
// 1+12 geofence point 0x82 new point (int id, int object, float latitude, float longitude)
// 1+2 geofence delete 0x87 design deleted (int id)
// 1+2 geofence enter 0x88 entering object (int id)
// 1+2 geofence exit 0x89 exiting object (int id)
// C 1+1+2 automated factory test 0x00 aft enabled (and starting)
// fillers (3 bytes)
// 0x01 aft done (successful)
// fillers (3 bytes)
// 0x02 aft done with errors
// fillers (3 bytes)
// 1+1+2 0xF0 aft test result
// test (1 byte)
// result (2 bytes)
// D 1+n system info 0x00 full version information
// board (1 byte)
// mcu (1+1 byte, major and minor)
// wcpu (1+1 byte, major and minor)
// prodid (12 bytes, product id)
// 1+n 0x01 uALFAT version
// str (string) version
// 1+3 0x02 MCU version
// board (1 byte)
// mcu (1+1 byte, major and minor)
// 1+14 0x03 WCPU version
// wcpu (1+1 byte, major and minor)
// prodid (12 bytes, product id)
// 2 0x04 Re-programming counter
// counter (2 bytes)
// 1+12 0x10 new version
// prodid (12 bytes; new product id)
// 1+6 0x20 real time clock set
// date+time (6 bytes, YYMMDDhhmmss)
// 1+3*4 0x30 new GPS data received
// long (float; longitude)
// latt (float; lattitude)
// alt (float; altitude)
// 1+1 0x40 temperature reading (on-board LM75)
// 0x41 temperature reading (NTC)
// 0x42 temperature reading (Switch 3000)
// temp (signed char)
// 1+2 0x48 temperature reading (on-board LM75, 8.8 signed integer)
// 0x49 temperature reading (NTC, 8.8 signed integer)
// 0x4A temperature reading (Switch 3000)
// temp (signed int, 8.8 format)
// 3*4 0x90 accelerometer or tilt sensor
// g(x) (float)
// g(y) (float)
// g(z) (float)
// E 1+2 software trap 0x00 oscillator fail (common on the dsPIC30F4011 :-s)
// 0x01 address error
// 0x02 stack error
// 0x03 math error
// 0x04 dma controller error (2 bytes, DMACS0 contents)
// F 6+3*4 timestamp (rtc+gps) rtc and gps data:
// rtc (6 bytes, YYMMDDHHMMSS)
// long (float; longitude)
// latt (float; lattitude)
// alt (float; altitude)
//
// Note about strings and their length: len=0xFF means that a second string, encoded as "len"
// followed by "str", possibly of length 0, will follow the first string (of length 255)
//
// Fields in the log IDs
// LOGF_MAJOR and LOGF_TIMESTAMP can be used to decode the header
//
#define LOGF_MAJOR(id_or_hdr) (((id_or_hdr) & 0xF000) >> 12)
#define LOGF_TIMESTAMP(hdr) ((hdr) & 0x0FFF)
#define LOGF_DETAIL(id) (((id) & 0x0F00) >> 8)
#define LOGF_MINOR(id) (((id) & 0x00FF) >> 0)
#define LOGF_ID(id) ((id) & 0xF0FF)
#define LOG_ID(major,minor) (((major) << 12) | ((minor) << 0))
#define LOG_DETAIL(f) ((f) << 12)
//
// Major IDs
//
#define LOGM_SYS 0x0
#define LOGM_PRIVATE 0x0 // never sent to MTinfo
#define LOGM_MEASURE_START 0x1
#define LOGM_MEASURE_END 0x2
#define LOGM_MEASURE_DETECT_OK 0x3
#define LOGM_MEASURE_DETECT_ALARM 0x4
#define LOGM_MEASUREMENT 0x5
#define LOGM_BATTERY 0x6
#define LOGM_KEY 0x7
#define LOGM_GSM 0x8
#define LOGM_TCP 0x8 // share with LOGM_GSM
#define LOGM_SMS 0x9
#define LOGM_PERIPHERAL 0xA
#define LOGM_GPS 0xB
#define LOGM_AFT 0xC
#define LOGM_SYSINFO 0xD
#define LOGM_SWERR 0xE
#define LOGM_TIMESTAMP 0xF
//
// The IDs for the Log() function
//
// system
#define LOG_SYSSTART 0x0000 // system power-up (mcu version, start-up counter, flags and RCON
// register, 1.1 + 2 + 2 + 2 = 8 bytes)
#define LOG_SHUTDOWN 0x0001 // system shutdown
#define LOG_APPLICATION_SPECIFIC 0x0000 // application defined data (not to be used for ZKL)
#define LOG_VERSION 0xD000 // version and product ID (5+12 bytes)
#define LOG_uALFAT_VERSION 0xD001 // uALFAT version (string)
#define LOG_MCU_VERSION 0xD002 // board and sw version (1+2 bytes)
#define LOG_WCPU_VERSION 0xD003 // sw version and product ID (2+12 bytes)
#define LOG_REPROGRAM_COUNTER 0xD004 // counter (2 bytes)
#define LOG_MCU_VERSION_DATECODE 0xD005 // version (board and sw w/ build) + datecode (1 + 2x1 + 2 + 2x2 bytes)
#define LOG_MCU_FLASH_WRAP 0xD006 // flash was erase (to keep track on how often this happens)
#define LOG_NEW_PRODID 0xD010 // new product ID (serial number) programmed
#define LOG_NEW_IDCODE 0xD011 // new ID-code programmed (client specific identification)
#define LOG_PRODID 0xD012 // product ID
#define LOG_RELAY_DRIVER_OFF 0xD018 // relay driver off
#define LOG_RELAY_DRIVER_ON 0xD019 // relay driver on
#define LOG_SET_TIME 0xDD20 // RTC data
#define LOG_SET_GPS_OLD 0xD030 // GPS data (old style)
#define LOG_SET_GPS 0xD031 // GPS data, with HDOP, speed and heading
#define LOG_GPS_PARAM 0xD03F // GPS parameters [unsigned int t_log, t_status]
#define LOG_TEMPERATURE_ONBOARD_OLD 0xD040 // temperature in <20>C (signed 8-bit integer)
#define LOG_TEMPERATURE_EXTERNAL_OLD 0xD041 // temperature in <20>C (signed 8-bit integer)
#define LOG_TEMPERATURE_SWITCH3000_OLD 0xD042 // temperature in <20>C (signed 8-bit integer)
#define LOG_TEMPERATURE_ONBOARD 0xD048 // temperature in <20>C in 8.8 signed fixed point
#define LOG_TEMPERATURE_EXTERNAL 0xD049 // temperature in <20>C in 8.8 signed fixed point
#define LOG_TEMPERATURE_SWITCH3000 0xD04A // temperature in <20>C in 8.8 signed fixed point
#define LOG_TEMPERATURE_ONBOARD_PERIODIC 0xD148
#define LOG_TEMPERATURE_EXTERNAL_PERIODIC 0xD149
#define LOG_TEMPERATURE_SWITCH3000_PERIODIC 0xD14A
#define LOG_TEMPERATURE_EXT1 (LOG_TEMPERATURE_ONBOARD)
#define LOG_TEMPERATURE_EXT2 (LOG_TEMPERATURE_EXTERNAL)
#define LOG_NTC_PARAM 0xD04F // NTC paramters
#define LOG_ENTER_POWER_SAVE 0xD050 // entering power save mode
#define LOG_EXIT_POWER_SAVE 0xD051 // exiting power save mode
#define LOG_VIBR_NONE 0xD080 // no vibration sensed, or the end of one of the following
#define LOG_VIBR_OTHER 0xD081 // uninterpretted vibration
#define LOG_VIBR_TRAIN 0xD082 // vibration, train
#define LOG_VIBR_CAR 0xD083 // vibration, transport in a car
#define LOG_VIBR_FOOT 0xD084 // vibration, transport by foot
#define LOG_TILT 0xD090 // tilt data: x,y,z in g's (float)
#define LOG_RAILSENSOR_ALARM 0xD098 // rail sensor not attached (no steel/metal detected)
#define LOG_RAILSENSOR_DETECT 0xD099 // rail sensor attached to rail (steel/metal detected)
#define LOG_ISRBUFSZ 0xD0F0 // debugging: nr bytes in the ISR buffer
#define LOG_TIMESTAMP 0xF000 // timestamp marker
#define LOG_TIME_ADJUST 0xF001 // time adjusted (non-ZKL logging only)
#define LOG_FILEPOS 0xF000 // file position of the log file; will NOT be written to
// the log file on the SD-card but it is solely intended
// for logging to the database server
// measurement
#define LOG_MEASURE_START 0x1000 // start of measurement
#define LOG_MEASURE_END 0x2000 // end of measurement
#define LOG_MEASURE_DETECT_OK 0x3000 // short circuit detected
#define LOG_MEASURE_DETECT_ALARM 0x4000 // no short circuit detected
#define LOG_MEASURE_SUSPEND 0x5000 // measurement suspended (battery almost dead?)
#define LOG_MEASURE_CUTOFF 0x5001 // emergency cut off after software failure
#define LOG_MEASURE_RETRY 0x5002 // measurement retried due to GSM interference
#define LOG_MEASURE_FAIL 0x5003 // measurement failed
#define LOG_MEASURE_DETAILS 0x5010 // measurement [int max_sample, unsigned int (b/a)*2^16]
#define LOG_MEASURE_FREQ_SWEEP 0x5011 // frequency sweep [int ms_sample, int pwm_period]
#define LOG_MEASURE_SUM 0x5712 // measurement [unsigned int v_ref_sum, v_meas_sum]
#define LOG_MEASURE_OUTOFBOUNDS 0x5713 // measurement [unsigned int v_ref_max, v_meas_max]
#define LOG_MEASURE_AMPL_SWEEP 0x5E14 // amplitude sweep [int ms_sample, int pwm_ampl]
#define LOG_MEASURE_DC 0x5715 // DC component [int v_ref, int v_measure]
#define LOG_MEASURE_RMS 0x5716 // measurement [unsigned int v_ref_rms, v_meas_rms]
#define LOG_MEASURE_LATENCY 0x5E17 // latency from timer #1 interrupt to measurement
#define LOG_MEASURE_LATENCY_EXP 0x5317 // latency too long
#define LOG_MEASURE_PWM 0x5718 // PWM details [int period, amplitude, offset]
#define LOG_MEASURE_PWM_SWEEP 0x5018 // PWM details after a sweep [int period, amplitude, offset]
#define LOG_MEASURE_PWM_DEFAULT 0x5018 // PWM details at start of measurement [int period, amplitude, offset]
#define LOG_MEASURE_RELAY_OPEN 0x5020 // relay feedback: open
#define LOG_MEASURE_RELAY_CLOSED 0x5021 // relay feedback: closed
#define LOG_MEASURE_AUTOCAL_START 0x5022 // start of auto-calibration
#define LOG_MEASURE_AUTOCAL_END 0x5023 // end of auto-calibration
#define LOG_MEASURE_DETECT_LIMIT 0x5024 // short circuit detection limit for b/a
#define LOG_MEASURE_NATWS 0x5028 // NATWS [unsigned int counter, int direction]
#define LOG_SAMPLES_VREF_RAW 0x5E80 // v_reference raw samples
#define LOG_SAMPLES_VMEAS_RAW 0x5E81 // v_measure raw samples
#define LOG_SAMPLES_VREF_FIR 0x5E82 // v_reference filtered samples
#define LOG_SAMPLES_VMEAS_FIR 0x5E83 // v_measure filtered samples
#define LOG_MEASURE_DETAILS_NEW 0x5090 // database logging only
// [unsigned int rms, delta, unsigned int b/a, delta, int reason]
// details, a.k.a. reason codes:
#define LOGD_FLUSH_EOF 0 // end of log file
#define LOGD_FLUSH_MEASUREMENT 1 // new measurement
#define LOGD_FLUSH_AVG 2 // update for running average over the historical data
#define LOGD_FLUSH_DELTA 3 // delta in historical data update from last measurement
#define LOGD_FLUSH_H_DELTA 4 // update for delta in historical data
// battery, always logged with the battery number
// 0, 1: main batteries
// 16..: Switch 3000 batteries to protect the sections
// 32 : Switch 3000 emergency battery
#define LOG_BATTERY_LOW 0x6000 // battery < 10.0V [int battery_adc]
#define LOG_BATTERY_CRITICAL 0x6001 // battery < 9.0V [int battery_adc]
#define LOG_BATTERY_RECOVERED 0x6002 // battery > 12.0V after low level [int battery_adc]
#define LOG_BATTERY_ABSENT 0x6003 // battery has been removed
#define LOG_BATTERY_LEVEL 0x6F10 // battery level
#define LOG_BATTERY_LEVEL_PERIODIC 0x6010 // battery level (1 minute logging)
#define LOG_BATTERY_LEVEL_1MIN (LOG_BATTERY_LEVEL_PERIODIC)
#define LOG_BATTERY_SELECT 0x6011 // battery selection
#define LOG_BATTERY_ERROR 0x6012 // battery error (wrong battery disabled)
#define LOG_BATTERY_ALARMLEVEL 0x6313 // battery alarm level
#define LOG_BATTERY_NORMLEVEL 0x6F14 // battery normalized (corrected) level
#define LOG_BATTERY_AGE 0x6380 // battery age (minutes)
// user interaction
#define LOG_KEY_MEASUREMENT 0x7000 // measurement on/off switch
#define LOG_KEY_MEASUREMENT_KEY_ON 0x7000 // measurement on key
#define LOG_KEY_MEASUREMENT_KEY_OFF 0x7002 // measurement off key
#define LOG_KEY_LIGHTINT 0x7010 // led intensity switch
#define LOG_KEY_LIGHTINT_HIGH 0x7011 // led intensity turn to full
#define LOG_KEY_LIGHTINT_LOW 0x7010 // led intensity dimmed
#define LOG_KEY_LANTERN 0x7020 // lantern switch
#define LOG_KEY_LANTERN_OFF 0x7020 // lantern switch
#define LOG_KEY_LANTERN_ON 0x7021 // lantern switch
#define LOG_KEY_AUTOCAL 0x7030 // auto-calibration switch
#define LOG_KEY_EXT_CONTACT 0x7040 // external contact
#define LOG_KEY_GPSPOWER 0x7050 // GPS 5V power
#define LOG_KEY_RELAY_DRIVER 0x7060 // Relay driver
#define LOG_KEY_SWITCH 0x7070 // Switch 3000
#define LOG_KEY_SWITCH_ENABLE 0x7072 // Switch 3000 released or withdrawn
#define LOG_KEY_OFF 0x0000 // (feature is turned off)
#define LOG_KEY_ON 0x0001 // (feature is turned on)
#define LOG_KEY_EXT 0x0080 // (feature is set from SMS or TCP)
#define LOG_KEY_AUTO 0x0008 // (feature is set automatically)
// modem interaction
#define LOG_GSM_SYSSTART 0x8000 // GSM/UART subsystem activated
#define LOG_GSM_MODEM_FOUND 0x8001 // modem found [int brg_value]
#define LOG_GSM_ERROR 0x8002 // command error [char *cmd]
#define LOG_GSM_OK 0x8F03 // command ok [char *cmd]
#define LOG_GSM_TIMEOUT 0x8004 // command time-out [char *cmd]
#define LOG_GSM_PWRON_FAIL 0x8008 // modem power on failed
#define LOG_GSM_PWROFF_FAIL 0x8009 // modem power off failed
#define LOG_GSM_RESET 0x800C // modem reset
#define LOG_GSM_PWRON 0x800E // modem powered up
#define LOG_GSM_PWROFF 0x800F // modem powered off
#define LOG_GSM_DETAILS 0x8710 // gsm info [char *cmd]
#define LOG_GSM_SQRSSI 0x8318 // gsm signal quality and received signal strenght
// [byte, 5 bits SQ (7..3) and 3 bits RSSI (2..0),
// as defined by the AT+CSQ response]
#define LOG_GSM_REGISTRATION 0x8019 // gsm registration [byte, GSMNOT_xxx constant]
#define LOG_GSM_OPERATOR 0x801A // gsm operator [char*]
#define LOG_GSM_LAC_CELLID 0x801B // gsm location area code and cell identifier [2 x unsigned int (16-bit)]
#define LOG_WAVECOM_BACKTRACE 0x8020 // Wavecom error backtrace
#define LOG_GSM_XMIT 0x8BF0 // transmitted data [char *str]
#define LOG_GSM_RECV 0x8BF1 // received data [int len, char *str]
// gprs/tcp
#define LOG_GPRS_DETAILS 0x8080 // IPv4 addresses self, gateway, dns1, dns2 [4 x char[4]]
#define LOG_GPRS_ERROR 0x8081 // error code [int]
#define LOG_TCP_ERROR 0x8090 // status [int]
#define LOG_TCP_DETAILS 0x8091 // peer [char*]
#define LOG_TCP_SCMD 0x8BA0 // command received via TCP
#define LOG_TCP_SREPLY 0x8BA1 // reply sent via TCP
#define LOG_TCP_CCMD 0x8BA2 // command sent via TCP
#define LOG_TCP_CREPLY 0x8BA3 // reply received via TCP
// sms subsystem
#define LOG_SMS_SYSSTART 0x9000 // SMS subsystem activated
#define LOG_SMS_COMPOSE 0x9010 // SMS created [int msg_type]
#define LOG_SMS_NOT_READY 0x9011 // SMS could not be created [int msg_type]
#define LOG_SMS_QUEUED 0x9020 // SMS in message store [int id, char *da] -- no longer used
#define LOG_SMS_SENT 0x9021 // SMS successfully sent [char *da]
#define LOG_SMS_ERROR 0x9022 // SMS not sent [char *da]
#define LOG_SMS_RECEIVED 0x9030 // SMS received [char *oa]
#define LOG_SMS_STATUS_REQUEST 0x9031 // status requested [int id]
#define LOG_SMS_MODIFY_REQUEST 0x9032 // eeprom data modification [int id, char *msg_text]
#define LOG_SMS_TEXT 0x933E // SMS text [char *msg_text]
#define LOG_SMS_UNKNOWN_REQUEST 0x903F // superfluous (bogus?) SMS data [int id, char *msg_text]
// i2c subsystem
#define LOG_I2C_SYSSTART 0xA000 // I2C and logging started
#define LOG_I2C_RESET 0xA201 // I2C bus reset
#define LOG_I2C_UALFAT_RESET 0xA001 // uALFAT reset
#define LOG_I2C_NO_BUS 0xA010 // I2C bus error
#define LOG_I2C_BUS_ERROR 0xA020 // I2C or <20>ALFAT error [unsigned char error]
#define LOG_I2C_UALFAT_ERROR (LOG_I2C_BUS_ERROR)
#define LOG_I2C_BUS_ERROR_DEBUG 0xA320 // I2C or <20>ALFAT error [unsigned char error]
#define LOG_I2C_FILE_ERROR 0xA021 // file or file system error [unsigned char error]
#define LOG_I2C_INDEX_ERROR 0xA022 // index file or file system error [unsigned char error]
#define LOG_I2C_INCOMPLETE 0xA023 // log file is incomplete (server protocol only)
#define LOG_I2C_REPLAY_ERROR 0xA924 // log reply retry [error, rpgm, startup, filepos]
#define LOG_I2C_REPLAY_RETRY 0xA924 // log reply retry [error, rpgm, startup, filepos]
#define LOG_FILE_ERROR (LOG_I2C_FILE_ERROR)
#define LOG_REPLAY_ERROR (LOG_I2C_REPLAY_ERROR)
#define LOG_REPLAY_RETRY (LOG_I2C_REPLAY_RETRY)
#define LOG_SWI2C_ERROR 0xA030 // software I2C bus error
#define LOG_SW1W_ERROR 0xA040 // software 1-Wire bus error
#define LOG_CAN_ERROR 0xA050 // CAN bus error
#define LOG_SWITCH3000_ERROR 0xA060 // Switch 3000 error
#define LOGD_SWITCH3000_ERROR 0x80 // not all sections have switched correctly
#define LOGD_SWITCH3000_ERRMASK 0xF0 // (mask)
#define LOGD_SWITCH3000_SECMASK 0x0F // (mask)
#define LOG_SWITCH3000_GET_STATUS 0xAD61 // Switch 3000 get status
#define LOG_SWITCH3000_STATE 0xAD62 // Switch 3000 current status [unsigned int switch_state]
#define LOG_SWITCH3000_STATE_CHANGE 0xA062 // Switch 3000 current status [...] after change
#define LOG_SWITCH3000_WITHDRAW 0xA064 // Switch 3000 release to project [unsigned long] withdrawn
#define LOG_SWITCH3000_RELEASE 0xA065 // Switch 3000 released to project [unsigned long]
#define LOG_SWITCH3000_OFF 0xA068 // Switch 3000 turned off
#define LOG_SWITCH3000_ON 0xA069 // Switch 3000 turned on
#define LOG_PM3000_ERROR 0xA070 // Power Management 3000 error
#define LOG_PM3000_SWITCH3000_OFF 0xA778 // Switch 3000 powered off
#define LOG_PM3000_SWITCH3000_ON 0xA779 // Switch 3000 powered on
#define LOG_PM3000_GPIO5_OFF 0xA77A // GPIO5 powered off
#define LOG_PM3000_GPIO5_ON 0xA77B // GPIO5 powered on
#define LOG_PM3000_CHARGER_OFF 0xA37C // Power Management: battery #2 charger off
#define LOG_PM3000_CHARGER_ON 0xA37D // Power Management: battery #2 charger on
#define LOG_PM3000_BOOST_OFF 0xAF7E // Power Management: V_measurement 5.7V
#define LOG_PM3000_BOOST_ON 0xAF7F // Power Management: V_measurement 9V
#define LOG_I2C_UALFAT_CMD 0xAFF0 // commands sent to the uALFAT
// gps subsystem
#define LOG_GPS_ENABLE 0xB300 // B300..B303: apply or remove power [char power]
#define LOG_GPS_ERROR 0xB008 // [int error_code]
// geofencing
#define LOG_GEOFENCE_DESIGN 0xB180
#define LOG_GEOFENCE_OBJECT 0xB181
#define LOG_GEOFENCE_POINT 0xB182
#define LOG_GEOFENCE_DELETE 0xB387
#define LOG_GEOFENCE_ENTER 0xB088
#define LOG_GEOFENCE_EXIT 0xB089
// automated factor test
#define LOG_AFT_START 0xC000 // enabled and starting
#define LOG_AFT_SUCCESS 0xC001 // done (successfull)
#define LOG_AFT_ERROR 0xC002 // done with errors
#define LOG_AFT_RESULT 0xC0F0 // test result [unsigned char test, int result]
// software traps, in "traps.c" - usually this is serious shit
#define LOG_SWERR_OSCILLATOR_FAIL 0xE000
#define LOG_SWERR_ADDRESS_ERROR 0xE001
#define LOG_SWERR_STACK_ERROR 0xE002
#define LOG_SWERR_MATH_ERROR 0xE003
#define LOG_SWERR_DMAC_ERROR 0xE004
#define LOG_SWERR_IPL_RAISED 0xE010
// generic string logging
#define LOG_MCU_GENERIC_STRING 0xE0F0 // generic string [int len, char *str]
// Checksum init value (rather arbitrary, but shouldn't be zero
// because the checksum of a block of zeros will be zero then,
// and since this is the most common type of error, it won't be
// possible to detect this)
// NB: checksums are introduced on 20110606
#define LOG_CHECKSUM_INIT 0x92
#endif /* _COMMON_ZKL_LOG_H */