/************************************************************************ * Project : GLACSWEB - Base Station - GPSCON * * Module : GPS controller * * Filename : gps.c * ************************************************************************/ #include "define.h" //***** Start of Code *************************************************** void CmdGPSSendRaw(void) { char loop; for(loop = 0; loop < RX_SIZE + 1; loop++) UARTWriteTXBuffer(RX_DATA[loop]); do {} while(BYTES_IN_UART_TX_BUF > 0); //wait until all bytes sent TenMilliSecondWait(); //wait for last byte to complete } void CmdGPSReceiveRaw(void) { char loop, c, size; unsigned int cs; UART2WriteTXBuffer(BYTES_IN_UART_RX_BUF); UART2WriteTXBuffer(_UART_RX_WRITE_LOC); UART2WriteTXBuffer(_UART_RX_READ_LOC); do {} while(BYTES_IN_UART2_TX_BUF > 0); //wait for data to be transmitted TenMilliSecondWait(); if(BYTES_IN_UART_RX_BUF > 15) size = 16; //check data size else size = BYTES_IN_UART_RX_BUF; cs = RX_HEADER_ID + size - 1; UART2WriteTXBuffer(cs); //header UART2WriteTXBuffer(CURRENT_ID); //current ID cs += CURRENT_ID; UART2WriteTXBuffer(CMD_GPS_RECEIVE_RAW); //command cs += CMD_GPS_RECEIVE_RAW; /* UART2WriteTXBuffer(RX_BYTE[0]); cs += RX_BYTE[0]; UART2WriteTXBuffer(RX_BYTE[1]); cs += RX_BYTE[1]; c = UARTReadRXBuffer(); c = UARTReadRXBuffer(); */ for(loop = 0; loop < size; loop++) { c = UARTReadRXBuffer(); //read data from GPS UART buffer UART2WriteTXBuffer(c); //write data to MCU UART buffer cs += c; //increment checksum } cs %= 256; UART2WriteTXBuffer(cs); //checksum do {} while(BYTES_IN_UART2_TX_BUF > 0); //wait for data to be transmitted TenMilliSecondWait(); UART2WriteTXBuffer(BYTES_IN_UART_RX_BUF); UART2WriteTXBuffer(_UART_RX_WRITE_LOC); UART2WriteTXBuffer(_UART_RX_READ_LOC); do {} while(BYTES_IN_UART2_TX_BUF > 0); //wait for data to be transmitted TenMilliSecondWait(); RTS = ASSERT; } void CmdGPSStartLogging(void) { char loop; UARTWriteTXBuffer('c'); //"create," command UARTWriteTXBuffer('r'); UARTWriteTXBuffer('e'); UARTWriteTXBuffer('a'); UARTWriteTXBuffer('t'); UARTWriteTXBuffer('e'); UARTWriteTXBuffer(','); for(loop = 0; loop < 8; loop++) UARTWriteTXBuffer(RX_DATA[loop]); //filename length must be 8 UARTWriteTXBuffer(0x0d); do {} while(BYTES_IN_UART_TX_BUF > 0); //wait until all bytes sent TenMilliSecondWait(); //wait for last byte to complete UARTWriteTXBuffer('e'); //"em,/cur/log,def" command UARTWriteTXBuffer('m'); UARTWriteTXBuffer(','); UARTWriteTXBuffer('/'); UARTWriteTXBuffer('c'); UARTWriteTXBuffer('u'); UARTWriteTXBuffer('r'); UARTWriteTXBuffer('/'); UARTWriteTXBuffer('l'); UARTWriteTXBuffer('o'); UARTWriteTXBuffer('g'); UARTWriteTXBuffer(','); UARTWriteTXBuffer('d'); UARTWriteTXBuffer('e'); UARTWriteTXBuffer('f'); UARTWriteTXBuffer(0x0d); do {} while(BYTES_IN_UART_TX_BUF > 0); //wait until all bytes sent TenMilliSecondWait(); //wait for last byte to complete } void CmdGPSStopLogging(void) { UARTWriteTXBuffer('d'); //"dm,/cur/log" command UARTWriteTXBuffer('m'); UARTWriteTXBuffer(','); UARTWriteTXBuffer('/'); UARTWriteTXBuffer('c'); UARTWriteTXBuffer('u'); UARTWriteTXBuffer('r'); UARTWriteTXBuffer('/'); UARTWriteTXBuffer('l'); UARTWriteTXBuffer('o'); UARTWriteTXBuffer('g'); UARTWriteTXBuffer(0x0d); do {} while(BYTES_IN_UART_TX_BUF > 0); //wait until all bytes sent TenMilliSecondWait(); //wait for last byte to complete } void CmdGPSTransferLog(void) { char loop; UARTWriteTXBuffer('p'); //"get,/log/" command UARTWriteTXBuffer('r'); UARTWriteTXBuffer('i'); UARTWriteTXBuffer('n'); UARTWriteTXBuffer('t'); UARTWriteTXBuffer(','); UARTWriteTXBuffer('/'); UARTWriteTXBuffer('l'); UARTWriteTXBuffer('o'); UARTWriteTXBuffer('g'); UARTWriteTXBuffer('/'); for(loop = 0; loop < 8; loop++) UARTWriteTXBuffer(RX_DATA[loop]); UARTWriteTXBuffer(0x0d); do {} while(BYTES_IN_UART_TX_BUF > 0); //wait until all bytes sent TenMilliSecondWait(); //wait for last byte to complete } void CmdGPSDeleteLog(void) { char loop; UARTWriteTXBuffer('r'); //"remove,/log/" command UARTWriteTXBuffer('e'); UARTWriteTXBuffer('m'); UARTWriteTXBuffer('o'); UARTWriteTXBuffer('v'); UARTWriteTXBuffer('e'); UARTWriteTXBuffer(','); UARTWriteTXBuffer('/'); UARTWriteTXBuffer('l'); UARTWriteTXBuffer('o'); UARTWriteTXBuffer('g'); UARTWriteTXBuffer('/'); for(loop = 0; loop < 8; loop++) UARTWriteTXBuffer(RX_DATA[loop]); UARTWriteTXBuffer(0x0d); do {} while(BYTES_IN_UART_TX_BUF > 0); //wait until all bytes sent TenMilliSecondWait(); //wait for last byte to complete } //***** End of Code ***************************************************