Changeset - 8e3cff0b603c
[Not reviewed]
default
0 2 0
Ethan Zonca - 8 years ago 2017-09-23 23:58:56
ez@ethanzonca.com
Fix callsign ID for balloon message, actually add grid locator encode to correct var
2 files changed with 13 insertions and 10 deletions:
0 comments (0 inline, 0 general)
src/main.c
Show inline comments
 
@@ -67,13 +67,13 @@ int main(void)
 
    uint8_t packet_type = 0;
 
 
    while (1)
 
    {
 
 
    	// Every 10 minutes, wake up and try to wspr
 
    	if(state == SYSTEM_IDLE && (HAL_GetTick() - last_wspr_tx_time > 60000 /* * 10 */))
 
    	if(state == SYSTEM_IDLE && (HAL_GetTick() - last_wspr_tx_time > 60000 * 10))
 
    	{
 
    		state = SYSTEM_GPSACQ;
 
    	}
 
 
        // Update fix status every 2 seconds
 
        if(HAL_GetTick() - gps_polltimer > 2000)
 
@@ -190,13 +190,13 @@ int main(void)
 
            			volatile uint8_t grid_locator[7];
 
 
            			__calc_gridloc(grid_locator, latitude_flt, longitude_flt);
 
 
                        // TODO: Switch between alternate and standard packet
 
						wspr_transmit(grid_locator, packet_type);
 
                        //packet_type = !packet_type; // alternate packet type
 
                        packet_type = !packet_type; // alternate packet type
 
						last_wspr_tx_time = HAL_GetTick();
 
						state = SYSTEM_IDLE;
 
            		}
 
            		else
 
            		{
 
            			// Window was missed, go back to idle, and try again after time delay
src/wspr.c
Show inline comments
 
@@ -15,13 +15,13 @@
 
char call_orig[7] = "KD8TDF";
 
#define DBM_ORIG 10
 

	
 

	
 
// Test stuff
 
char call[7] = "KD8TDF";
 
char loc[5] = "EN82";
 
char loc[7] = "EN82";
 
uint8_t dbm = 10;
 
uint8_t tx_buffer[255];
 

	
 
// Frequencies and channel info
 
uint32_t freq = WSPR_DEFAULT_FREQ;
 
uint8_t symbol_count = WSPR_SYMBOL_COUNT;
 
@@ -66,15 +66,12 @@ void wspr_transmit(uint8_t* grid_locator
 
        altscaled = 60;
 

	
 

	
 
    // If alternate packet, send 0XFXXEN82XX
 
    if(send_alternate)
 
    {
 

	
 

	
 

	
 
        /////////////////////////////////////////////////
 
        // Composite altitude and sub-maidenhead locator
 
        ///////////////////////////////////////////////// 
 
        uint16_t maiden_ext = (loc[4] - 'A') + ((loc[5] - 'A') * 24); // 0-575
 
        uint16_t altitude_mod = gps_getdata()->altitude / 20;   
 

	
 
@@ -87,12 +84,14 @@ void wspr_transmit(uint8_t* grid_locator
 

	
 

	
 

	
 
        ////////////////////////////////////////////
 
        // Encode extended maidenhead and altitude
 
        ////////////////////////////////////////////
 

	
 
        // Static set first char: balloon ID (invalid call)
 
        call[0] = '0';
 

	
 
        // Split into chunks of valmax 36, 26, 26, 26
 

	
 
        // Mask off following 3 26valmax fields
 
        uint32_t chunk = subalt / 26 / 26 / 26; 
 
@@ -100,12 +99,16 @@ void wspr_transmit(uint8_t* grid_locator
 
        // Encode to callsign
 
        if(chunk < 10)
 
            call[1] = '0' + chunk;
 
        else
 
            call[1] = chunk - 10 + 'A';
 

	
 

	
 
        // Static set ID
 
        call[2] = '4'; // balloon ID #4
 

	
 
        // Subtract off previous portion
 
        subalt -= (chunk * 26 * 26 * 26);
 

	
 
        // Mask off following 2 26bit values
 
        chunk = (subalt / 26 / 26);
 

	
 
@@ -157,40 +160,40 @@ void wspr_transmit(uint8_t* grid_locator
 
        ////////////////////////////////////////////
 

	
 
        // Mask off fields
 
        chunk = engdata / 18 / 10 / 10 / 19;  
 

	
 
        // Encode to grid locator
 
        grid_locator[0] = 'A' + chunk;
 
        loc[0] = 'A' + chunk;
 

	
 
        // Subtract off previous portion 
 
        engdata -= (chunk * 18 * 10 * 10 * 19);  
 

	
 
        // Mask of fields
 
        chunk = engdata / 10 / 10 / 19;  
 

	
 
        // Encode to grid locator
 
        grid_locator[1] = 'A' + chunk;
 
        loc[1] = 'A' + chunk;
 

	
 
        // Subtract off previous portion
 
        engdata -= (chunk * 10 * 10 * 19);  
 

	
 
        // Mask off fields
 
        chunk = engdata / 10 / 19;  
 

	
 
        // Encode
 
        grid_locator[2] = '0' + chunk;
 
        loc[2] = '0' + chunk;
 

	
 
        // Subtract
 
        engdata -= (chunk * 10 * 19);  
 

	
 
        // Mask off
 
        chunk = engdata / 19;  
 

	
 
        // Encode
 
        grid_locator[3] = chunk;
 
        loc[3] = chunk;
 

	
 
        // Subtract
 
        engdata -= (chunk * 19);  
 

	
 
        // Mask off
 
        chunk = engdata;  
0 comments (0 inline, 0 general)