diff options
| author | Keith Packard <keithp@keithp.com> | 2012-12-05 22:23:46 -0800 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2012-12-05 22:23:46 -0800 | 
| commit | 74969483736381858484dca9ebb528d9d2d73f5b (patch) | |
| tree | 0981c6a8333e71adb7ab5ff2e9c16d9cadb0970b /src/drivers/ao_aprs.c | |
| parent | 933d654ec917d9794e87407a7e579438bb738d54 (diff) | |
altos: Start restructuring APRS code to create and send packets
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/drivers/ao_aprs.c')
| -rw-r--r-- | src/drivers/ao_aprs.c | 52 | 
1 files changed, 24 insertions, 28 deletions
diff --git a/src/drivers/ao_aprs.c b/src/drivers/ao_aprs.c index 7e9013a0..b8d17bd9 100644 --- a/src/drivers/ao_aprs.c +++ b/src/drivers/ao_aprs.c @@ -238,22 +238,6 @@ void timeInit()      timeNCOFreq = 0x2000;  } -/** - *   Timer interrupt handler called every 104uS (9600 times/second). - */ -void timeUpdate() -{ -    putchar ((timeNCO >> 8) < 0x80 ? 0xc0 : 0x40); - -    timeNCO += timeNCOFreq; - -    if (++timeLowRateCount == 8)  -    { -	timeLowRateCount = 0; -	tnc1200TimerTick(); -    } // END if -} -  /** @} */  /** @@ -553,6 +537,28 @@ void tncPositionPacket(void)      tncLength += c;  } +static int16_t +tncFill(uint8_t *buf, int16_t len) +{ +    int16_t	l = 0; +    uint8_t	b; +    uint8_t	bit; + +    while (tncMode != TNC_TX_READY && l < len) { +	b = 0; +	for (bit = 0; bit < 8; bit++) { +	    b = b << 1 | (timeNCO >> 15); +	    timeNCO += timeNCOFreq; +	} +	*buf++ = b; +	l++; +	tnc1200TimerTick(); +    } +    if (tncMode == TNC_TX_READY) +	l = -l; +    return l; +} +  /**    *    Prepare an AX.25 data packet.  Each time this method is called, it automatically   *    rotates through 1 of 3 messages. @@ -589,19 +595,9 @@ void tncTxPacket(void)      tncIndex = 0;      tncMode = TNC_TX_SYNC; -    // Turn on the PA chain. -//    output_high (IO_PTT); - -    // Wait for the PA chain to power up. -//    delay_ms (10); - -    // Key the DDS. -//    output_high (IO_OSK); +    timeInit(); -    // Log the battery and reference voltage just after we key the transmitter. -//    sysLogVoltage(); -    while (tncMode != TNC_TX_READY) -	timeUpdate(); +    ao_radio_send_lots(tncFill);  }  /** @} */  | 
