# HG changeset patch # User Ethan Zonca # Date 2017-09-23 11:08:30 # Node ID 2a60a19d0303244abe137df937f1e21e926bebc1 # Parent f401954009419cce6f1e9125ad406ffebbf3c959 Fix encoding, add some dummy values, code compiles and might work now diff --git a/src/wspr.c b/src/wspr.c --- a/src/wspr.c +++ b/src/wspr.c @@ -99,7 +99,7 @@ void wspr_transmit(uint8_t* grid_locator // Encode to callsign if(chunk < 10) - call[1] = '0' + chunk + call[1] = '0' + chunk; else call[1] = chunk - 10 + 'A'; @@ -112,7 +112,7 @@ void wspr_transmit(uint8_t* grid_locator call[3] = 'A' + chunk; // Subtract off previous portion - subalt -= (chunk * 26 * 26) + subalt -= (chunk * 26 * 26); // Mask off following 1 26bit values chunk = (subalt / 26); @@ -131,19 +131,25 @@ void wspr_transmit(uint8_t* grid_locator //////////////////////////////////////// // Encode value from -50C to 39C => 0-89. TODO: Bounds! - uint8_t temp_enc = 0 + 50; + uint8_t temp_enc = 12 + 50; // Encode value from 0-39 with some scalar/offset/etc - uint8_t batt_enc = 0; + uint8_t batt_enc = 16; // Encode speed in knots from 0-82 to 0-41 - uint8_t speed_enc = gpsdata()->speed / 2; + uint8_t speed_enc = gps_getdata()->speed / 2; if(speed_enc > 41) speed_enc = 41; // Encode GPS status uint8_t gps_status = 0b00; // MSB is valid fix, lsb is sats > 8 + if(gps_getdata()->fixtype == 2 || gps_getdata()->fixtype == 3) + gps_status |= 0b10; + + if(gps_getdata()->sats_in_solution > 5) + gps_status |= 0b01; + uint32_t engdata = gps_status + 2 * (speed_enc + 42 * (batt_enc + 40 * temp_enc)); //////////////////////////////////////////// @@ -172,7 +178,7 @@ void wspr_transmit(uint8_t* grid_locator chunk = engdata / 10 / 19; // Encode - grid_locater[2] = '0' + chunk; + grid_locator[2] = '0' + chunk; // Subtract engdata -= (chunk * 10 * 19); @@ -190,8 +196,10 @@ void wspr_transmit(uint8_t* grid_locator chunk = engdata; // Encode - uint8_t powers[] = {0, 3, 7, 10, 13, 17, 20, 23, 27, 30, 33, 37, 40, 43, 47, 50, 53, 57, 60} + uint8_t powers[] = {0, 3, 7, 10, 13, 17, 20, 23, 27, 30, 33, 37, 40, 43, 47, 50, 53, 57, 60}; dbm = powers[chunk]; + + } else {