diff --git a/src/mesg_num.jl b/src/mesg_num.jl new file mode 100644 index 0000000..355b00c --- /dev/null +++ b/src/mesg_num.jl @@ -0,0 +1,217 @@ +# Take from MesgNum.java class in SDK. + +module mesg_num + +FILE_ID = 0 +CAPABILITIES = 1 +DEVICE_SETTINGS = 2 +USER_PROFILE = 3 +HRM_PROFILE = 4 +SDM_PROFILE = 5 +BIKE_PROFILE = 6 +ZONES_TARGET = 7 +HR_ZONE = 8 +POWER_ZONE = 9 +MET_ZONE = 10 +SPORT = 12 +GOAL = 15 +SESSION = 18 +LAP = 19 +RECORD = 20 +EVENT = 21 +DEVICE_INFO = 23 +WORKOUT = 26 +WORKOUT_STEP = 27 +SCHEDULE = 28 +WEIGHT_SCALE = 30 +COURSE = 31 +COURSE_POINT = 32 +TOTALS = 33 +ACTIVITY = 34 +SOFTWARE = 35 +FILE_CAPABILITIES = 37 +MESG_CAPABILITIES = 38 +FIELD_CAPABILITIES = 39 +FILE_CREATOR = 49 +BLOOD_PRESSURE = 51 +SPEED_ZONE = 53 +MONITORING = 55 +TRAINING_FILE = 72 +HRV = 78 +ANT_RX = 80 +ANT_TX = 81 +ANT_CHANNEL_ID = 82 +LENGTH = 101 +MONITORING_INFO = 103 +PAD = 105 +SLAVE_DEVICE = 106 +CONNECTIVITY = 127 +WEATHER_CONDITIONS = 128 +WEATHER_ALERT = 129 +CADENCE_ZONE = 131 +HR = 132 +SEGMENT_LAP = 142 +MEMO_GLOB = 145 +SEGMENT_ID = 148 +SEGMENT_LEADERBOARD_ENTRY = 149 +SEGMENT_POINT = 150 +SEGMENT_FILE = 151 +WORKOUT_SESSION = 158 +WATCHFACE_SETTINGS = 159 +GPS_METADATA = 160 +CAMERA_EVENT = 161 +TIMESTAMP_CORRELATION = 162 +GYROSCOPE_DATA = 164 +ACCELEROMETER_DATA = 165 +THREE_D_SENSOR_CALIBRATION = 167 +VIDEO_FRAME = 169 +OBDII_DATA = 174 +NMEA_SENTENCE = 177 +AVIATION_ATTITUDE = 178 +VIDEO = 184 +VIDEO_TITLE = 185 +VIDEO_DESCRIPTION = 186 +VIDEO_CLIP = 187 +OHR_SETTINGS = 188 +EXD_SCREEN_CONFIGURATION = 200 +EXD_DATA_FIELD_CONFIGURATION = 201 +EXD_DATA_CONCEPT_CONFIGURATION = 202 +FIELD_DESCRIPTION = 206 +DEVELOPER_DATA_ID = 207 +MAGNETOMETER_DATA = 208 +BAROMETER_DATA = 209 +ONE_D_SENSOR_CALIBRATION = 210 +TIME_IN_ZONE = 216 +SET = 225 +STRESS_LEVEL = 227 +DIVE_SETTINGS = 258 +DIVE_GAS = 259 +DIVE_ALARM = 262 +EXERCISE_TITLE = 264 +DIVE_SUMMARY = 268 +JUMP = 285 +SPLIT = 312 +CLIMB_PRO = 317 +TANK_UPDATE = 319 +TANK_SUMMARY = 323 +DEVICE_AUX_BATTERY_INFO = 375 +DIVE_APNEA_ALARM = 393 +INVALID = -1 + +# All message numbers and their string variants. +MESG_NUM_MAP = Dict( + FILE_ID => "FILE_ID", + CAPABILITIES => "CAPABILITIES", + DEVICE_SETTINGS => "DEVICE_SETTINGS", + USER_PROFILE => "USER_PROFILE", + HRM_PROFILE => "HRM_PROFILE", + SDM_PROFILE => "SDM_PROFILE", + BIKE_PROFILE => "BIKE_PROFILE", + ZONES_TARGET => "ZONES_TARGET", + HR_ZONE => "HR_ZONE", + POWER_ZONE => "POWER_ZONE", + MET_ZONE => "MET_ZONE", + SPORT => "SPORT", + GOAL => "GOAL", + SESSION => "SESSION", + LAP => "LAP", + RECORD => "RECORD", + EVENT => "EVENT", + DEVICE_INFO => "DEVICE_INFO", + WORKOUT => "WORKOUT", + WORKOUT_STEP => "WORKOUT_STEP", + SCHEDULE => "SCHEDULE", + WEIGHT_SCALE => "WEIGHT_SCALE", + COURSE => "COURSE", + COURSE_POINT => "COURSE_POINT", + TOTALS => "TOTALS", + ACTIVITY => "ACTIVITY", + SOFTWARE => "SOFTWARE", + FILE_CAPABILITIES => "FILE_CAPABILITIES", + MESG_CAPABILITIES => "MESG_CAPABILITIES", + FIELD_CAPABILITIES => "FIELD_CAPABILITIES", + FILE_CREATOR => "FILE_CREATOR", + BLOOD_PRESSURE => "BLOOD_PRESSURE", + SPEED_ZONE => "SPEED_ZONE", + MONITORING => "MONITORING", + TRAINING_FILE => "TRAINING_FILE", + HRV => "HRV", + ANT_RX => "ANT_RX", + ANT_TX => "ANT_TX", + ANT_CHANNEL_ID => "ANT_CHANNEL_ID", + LENGTH => "LENGTH", + MONITORING_INFO => "MONITORING_INFO", + PAD => "PAD", + SLAVE_DEVICE => "SLAVE_DEVICE", + CONNECTIVITY => "CONNECTIVITY", + WEATHER_CONDITIONS => "WEATHER_CONDITIONS", + WEATHER_ALERT => "WEATHER_ALERT", + CADENCE_ZONE => "CADENCE_ZONE", + HR => "HR", + SEGMENT_LAP => "SEGMENT_LAP", + MEMO_GLOB => "MEMO_GLOB", + SEGMENT_ID => "SEGMENT_ID", + SEGMENT_LEADERBOARD_ENTRY => "SEGMENT_LEADERBOARD_ENTRY", + SEGMENT_POINT => "SEGMENT_POINT", + SEGMENT_FILE => "SEGMENT_POINT", + WORKOUT_SESSION => "WORKOUT_SESSION", + WATCHFACE_SETTINGS => "WATCHFACE_SETTINGS", + GPS_METADATA => "GPS_METADATA", + CAMERA_EVENT => "CAMERA_EVENT", + TIMESTAMP_CORRELATION => "TIMESTAMP_CORRELATION", + GYROSCOPE_DATA => "GYROSCOPE_DATA", + ACCELEROMETER_DATA => "ACCELEROMETER_DATA", + THREE_D_SENSOR_CALIBRATION => "THREE_D_SENSOR_CALIBRATION", + VIDEO_FRAME => "VIDEO_FRAME", + OBDII_DATA => "OBDII_DATA", + NMEA_SENTENCE => "NMEA_SENTENCE", + AVIATION_ATTITUDE => "AVIATION_ATTITUDE", + VIDEO => "VIDEO", + VIDEO_TITLE => "VIDEO_TITLE", + VIDEO_DESCRIPTION => "VIDEO_DESCRIPTION", + VIDEO_CLIP => "VIDEO_CLIP", + OHR_SETTINGS => "OHR_SETTINGS", + EXD_SCREEN_CONFIGURATION => "EXD_SCREEN_CONFIGURATION", + EXD_DATA_FIELD_CONFIGURATION => "EXD_DATA_FIELD_CONFIGURATION", + EXD_DATA_CONCEPT_CONFIGURATION => "EXD_DATA_CONCEPT_CONFIGURATION", + FIELD_DESCRIPTION => "FIELD_DESCRIPTION", + DEVELOPER_DATA_ID => "DEVELOPER_DATA_ID", + MAGNETOMETER_DATA => "MAGNETOMETER_DATA", + BAROMETER_DATA => "BAROMETER_DATA", + ONE_D_SENSOR_CALIBRATION => "ONE_D_SENSOR_CALIBRATION", + TIME_IN_ZONE => "TIME_IN_ZONE", + SET => "SET", + STRESS_LEVEL => "STRESS_LEVEL", + DIVE_SETTINGS => "DIVE_SETTINGS", + DIVE_GAS => "DIVE_GAS", + DIVE_ALARM => "DIVE_ALARM", + EXERCISE_TITLE => "EXERCISE_TITLE", + DIVE_SUMMARY => "DIVE_SUMMARY", + JUMP => "JUMP", + SPLIT => "SPLIT", + CLIMB_PRO => "CLIMB_PRO", + TANK_UPDATE => "TANK_UPDATE", + TANK_SUMMARY => "TANK_SUMMARY", + DEVICE_AUX_BATTERY_INFO => "DEVICE_AUX_BATTERY_INFO", + DIVE_APNEA_ALARM => "DIVE_APNEA_ALARM", + INVALID => "INVALID" +) + +""" + get_mesg_num_string(mesg_num::Integer)::Union{AbstractString,Nothing} + +Given the number from our data record, get a string label. Nothing if not found. +""" +function get_mesg_num_string(mesg_num::Integer)::Union{AbstractString,Nothing} + try + MESG_NUM_MAP[mesg_num] + catch e + if e isa KeyError + nothing + else + rethrow(e) + end + end +end + +end \ No newline at end of file