@@ -21,7 +21,8 @@ void FCTarot::Init()
2121{
2222 static_assert (sizeof (FCTarot::GPSType) == FCTarot::PacketContentSize, " Tarot GPS PaketSize does not match!" );
2323 static_assert (sizeof (FCTarot::RCType) == FCTarot::PacketContentSize, " Tarot RC PaketSize does not match!" );
24- static_assert (sizeof (FCTarot::HomeDataType) == FCTarot::PacketContentSize, " Tarot HomeData PaketSize does not match!" );
24+ static_assert (sizeof (FCTarot::BatteryType) == FCTarot::PacketContentSize, " Tarot Battery PaketSize does not match!" );
25+ static_assert (sizeof (FCTarot::TimeType) == FCTarot::PacketContentSize, " Tarot Time PaketSize does not match!" );
2526
2627 static_assert (sizeof (FCTarot::Paket) == FCTarot::PaketSize, " Tarot PaketSize does not match!" );
2728
@@ -117,18 +118,20 @@ void FCTarot::Process(Paket& paket)
117118 case PaketType::RC:
118119 Process (paket.RC );
119120 break ;
120- case PaketType::HomeData:
121- Process (paket.HomeData );
121+ case PaketType::Battery:
122+ Process (paket.Battery );
123+ break ;
124+ case PaketType::Time:
125+ Process (paket.Time );
126+ break ;
122127 }
123128}
124129
125- void FCTarot::Process (GPSType & data)
130+ void FCTarot::Process (RCType & data)
126131{
127- SensorData.SetPositionCurrent (data.Latitude / 10000000 .f , data.Longitude / 10000000 .f );
128- SensorData.SetAltitude (data.Altitude / 10 .f );
129- SensorData.SetSpeed (data.Speed / 10 .f );
130- SensorData.SetVerticalSpeed (data.Climb / 10 .f );
131- SensorData.SetBattery (data.Voltage * 10 );
132+ SensorData.SetThrottle (data.Throttle * 10 );
133+
134+ SensorData.SetArmed (data.Armed );
132135
133136 if (data.Failsafe != 0 )
134137 SensorData.SetFlightMode (FlightMode::Failsafe);
@@ -142,18 +145,30 @@ void FCTarot::Process(GPSType& data)
142145 SensorData.SetSatellites (data.Satellites );
143146 SensorData.SetFixType (data.Satellites == 0 ? GPSFixType::FixNo : data.Satellites < 4 ? GPSFixType::Fix2D : GPSFixType::Fix3D);
144147
148+ // TODO: Set RC Channels
145149}
146150
147- void FCTarot::Process (RCType & data)
151+ void FCTarot::Process (GPSType & data)
148152{
149- SensorData.SetArmed (data.Armed );
150- // TODO: Set RC Channels
153+ SensorData.SetPositionHome (data.HomeLatitude / 10000000 .f , data.HomeLongitude / 10000000 .f );
154+ SensorData.SetHomeAltitude (data.HomeAltitude / 10 .f );
155+
156+ SensorData.SetPositionCurrent (data.Latitude / 10000000 .f , data.Longitude / 10000000 .f );
157+ SensorData.SetAltitude (data.Altitude / 10 .f );
158+
159+ SensorData.SetSpeed (data.Speed / 10 .f );
160+ SensorData.SetVerticalSpeed (data.Climb / 10 .f );
161+ }
162+
163+ void FCTarot::Process (BatteryType& data)
164+ {
165+ SensorData.SetBattery (data.Voltage * 10 );
151166}
152167
153- void FCTarot::Process (HomeDataType & data)
168+ void FCTarot::Process (TimeType & data)
154169{
155- SensorData. SetHomeAltitude ( data.Altitude / 10 . f );
156- SensorData.SetPositionHome (data. Latitude / 10000000 . f , data. Longitude / 10000000 . f );
170+ Utils::DateTime dt = Utils::DateTime ( 1467504000 + data.Time / 1000 );
171+ SensorData.SetDateTime (dt );
157172}
158173
159174uint16_t FCTarot::calculateChecksum (const uint8_t * data, uint8_t size)
0 commit comments