The uGravity Mission
Data generated by uG mission utilizes the followind dataframe structure:
Frame sent to uG Host mission: 41 BytesSOF (3B) + Payload (35B) + EOF (3B)
Ex: {{{BBB..BBB}\n\r7b 7b 7b 00 01 02 03 04  05 05 00 00 00 00 00 00 00 00 00 00 00 01 00 00 09 00 0d 01 02 03 04 05 06 07 08 09 0a 06 7d 0a 0d
Frame raw content:
Start of Frame:
ugFrame[0] = '{';   // 0x7B
ugFrame[1] = '{';   // 0x7B
ugFrame[2] = '{';   // 0x7B
Frame payload:
ugFrame[3]  = obdh_sysclock_s_H
ugFrame[4]  = obdh_sysclock_s_L
ugFrame[5]  = obdh_sysclock_ms_H
ugFrame[6]  = obdh_sysclock_ms_L
ugFrame[7]  = obdh_internal_temperature_H
ugFrame[8]  = obdh_internal_temperature_L
ugFrame[9]  = obdh_statuscode
ugFrame[10] = imu_acc_x_H
ugFrame[11] = imu_acc_x_L
ugFrame[12] = imu_acc_y_H
ugFrame[13] = imu_acc_y_L
ugFrame[14] = imu_acc_z_H
ugFrame[15] = imu_acc_z_L
ugFrame[16] = imu_gyr_x_H
ugFrame[17] = imu_gyr_x_L
ugFrame[18] = imu_gyr_y_H
ugFrame[19] = imu_gyr_y_L
ugFrame[20] = imu_gyr_z_H
ugFrame[21] = imu_gyr_z_L
ugFrame[22] = radio_counter1_H
ugFrame[23] = radio_counter1_L
ugFrame[24] = radio_counter2_H
ugFrame[25] = radio_counter2_L
ugFrame[26] = eps_current_H
ugFrame[27] = eps_current_L
ugFrame[28] = eps_voltage_bat1_H
ugFrame[29] = eps_voltage_bat1_L
ugFrame[30] = eps_voltage_bat2_H
ugFrame[31] = eps_voltage_bat2_L
ugFrame[32] = eps_temperature_H
ugFrame[33] = eps_temperature_L
ugFrame[34] = eps_current_acc_H
ugFrame[35] = eps_current_acc_L
ugFrame[36] = eps_batmon_reg
ugFrame[37] = CRC FIELD
End of Frame:
ugFrame[38] =  '}';    // 0x7D
ugFrame[39] = '\n';    // 0x0A
ugFrame[40] = '\r';    // 0x0D
The above data is sent to the mission host (uG control/rocket) and later recovered. The recorded data can be decoded using the following formulas:
Conversion formulas:
SOF: x7Bx7Bx7B
OBDH System Clock (s)  = (obdh_sysclock_s_H << 8) + obdh_sysclock_s_L
OBDH System Clock (ms) = (obdh_sysclock_ms_H << 8) + obdh_sysclock_ms_L 
OBDH Status code       = obdh_statuscode 
IMU_ACC_RANGE = 16.0
IMU ACC X = (((imu_acc_x_H << 8 | imu_acc_x_L) * IMU_ACC_RANGE) / 32768.0)
IMU ACC Y = (((imu_acc_y_H << 8 | imu_acc_y_L) * IMU_ACC_RANGE) / 32768.0)
IMU ACC Z = (((imu_acc_z_H << 8 | imu_acc_z_L) * IMU_ACC_RANGE) / 32768.0)
IMU_GYR_RANGE =  250.0
IMU GYR X = (((imu_acc_x_H << 8 | imu_acc_x_L) * IMU_GYR_RANGE) / 32768.0)
IMU GYR X = (((imu_acc_y_H << 8 | imu_acc_y_L) * IMU_GYR_RANGE) / 32768.0)
IMU GYR Z = (((imu_acc_z_H << 8 | imu_acc_z_L) * IMU_GYR_RANGE) / 32768.0)
Radio Counter 1 = (radio_counter1_H << 8) + radio_counter1_L
Radio Counter 2 = (radio_counter2_H << 8) + radio_counter2_L
EPS Current = ((eps_current_H << 8) + eps_current_L) * (0.0000015625 / 0.015)
EPS Voltage Bat 1 = ((eps_voltage_bat1_H << 8) + eps_voltage_bat1_L) * 0.004886
EPS Voltage Bat 2 = ((eps_voltage_bat2_H << 8) + eps_voltage_bat2_L) * 0.004886 
EPS Temperature = ((eps_temperature_H << 8) + eps_temperature_L) * 0.125
EPS Current Acc = ((eps_current_acc_H << 8) + eps_current_acc_L) * (0.00000625 / 0.015)
EPS Bat Mon Reg = eps_batmon_reg
EOF: x7Dx0Ax0D