Bmag incl gps rettelse

Dependencies:   mbed WDT MODSERIAL BME280

Committer:
MAA
Date:
Thu Apr 05 08:32:10 2018 +0000
Branch:
MbedBMAGThrRev
Revision:
51:dbd8e6c2211b
Parent:
50:38ba0148702e
Child:
53:cdaeb8938919
new file generation at midnight removed.; generated sps filename changed to date_time_BMAG_sn

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MAA 0:b3313c5ffca3 1 #include <string>
MAA 0:b3313c5ffca3 2 #include "mbed.h"
MAA 34:c6c5e7ec9163 3 #include <time.h>
MAA 27:efd122db8855 4 #include "rtos.h"
MAA 24:099df3fa2b13 5 #include <Ticker.h>
MAA 0:b3313c5ffca3 6 #include "MODSERIAL/MODSERIAL.h"
MAA 0:b3313c5ffca3 7 #include "NMEA/NMEA.h"
MAA 0:b3313c5ffca3 8 #include "USBHostMSD.h"
MAA 2:39c4a85dc2a4 9 #include "WDT/WDT.h"
MAA 2:39c4a85dc2a4 10 #include "SPS/SPS.h"
MAA 8:d6287c33b54a 11 #include "BMAG/BMAG.h"
MAA 11:d3d26d0e71ea 12 #include "ErrorHandler/ErrorHandler.h"
MAA 28:ed0d29f63b55 13 #include "BME280/BME280.h"
MAA 0:b3313c5ffca3 14
MAA 0:b3313c5ffca3 15 #define FWSRCVERSION "x"
MAA 51:dbd8e6c2211b 16 #define FWIVERSION "1.0.0.4"
MAA 0:b3313c5ffca3 17 #define IDENTIFIERID "00"
MAA 24:099df3fa2b13 18 #define ENCODING "0"
MAA 0:b3313c5ffca3 19 #define TIMEZONE "ZZZ"
MAA 8:d6287c33b54a 20 #define SOURCEIDENTIFICATION "0000"
MAA 0:b3313c5ffca3 21 #define GROUP "00"
MAA 28:ed0d29f63b55 22 #define DATALINEVERSION "03"
MAA 0:b3313c5ffca3 23 #define TAG "BMAG"
MAA 0:b3313c5ffca3 24
MAA 28:ed0d29f63b55 25 using namespace std;
MAA 0:b3313c5ffca3 26
MAA 0:b3313c5ffca3 27 //GPS communication init
MAA 8:d6287c33b54a 28 static MODSERIAL gps(p13, p14, 128);
MAA 8:d6287c33b54a 29
MAA 8:d6287c33b54a 30 //BMAG communication init
MAA 8:d6287c33b54a 31 static MODSERIAL bmag(p9, p10, 64);
MAA 0:b3313c5ffca3 32
MAA 0:b3313c5ffca3 33 //Debug serial connection
MAA 0:b3313c5ffca3 34 static Serial dbg(USBTX, USBRX);
MAA 0:b3313c5ffca3 35
MAA 0:b3313c5ffca3 36 //GPS Rx callback prototype
MAA 0:b3313c5ffca3 37 void rxCallback(MODSERIAL_IRQ_INFO *q);
MAA 0:b3313c5ffca3 38
MAA 8:d6287c33b54a 39 //BMAG Rx callback prototype
MAA 8:d6287c33b54a 40 void bmagrxCallback(MODSERIAL_IRQ_INFO *q);
MAA 8:d6287c33b54a 41
MAA 0:b3313c5ffca3 42 //GPS NMEA Parser
MAA 0:b3313c5ffca3 43 static NMEA gpsNMEA;
MAA 0:b3313c5ffca3 44
MAA 8:d6287c33b54a 45 //BMAG Parser
MAA 8:d6287c33b54a 46 static BMAG magParser;
MAA 0:b3313c5ffca3 47
MAA 28:ed0d29f63b55 48 //BME280 i2c conn
MAA 28:ed0d29f63b55 49 static I2C BME280_i2c(p28, p27);
MAA 28:ed0d29f63b55 50
MAA 28:ed0d29f63b55 51 //BME 280 instance
MAA 28:ed0d29f63b55 52 static BME280 BME;
MAA 8:d6287c33b54a 53
MAA 27:efd122db8855 54 //EA_OLED display
MAA 27:efd122db8855 55 Thread thr_writelines;
MAA 27:efd122db8855 56 SPI * spiptr;
MAA 27:efd122db8855 57 DigitalOut * csptr;
MAA 27:efd122db8855 58 string l1;
MAA 27:efd122db8855 59 string l2;
MAA 27:efd122db8855 60
MAA 27:efd122db8855 61 void init_config(char c){
MAA 27:efd122db8855 62 *csptr = 0; //chip select to start data transmission
MAA 27:efd122db8855 63 spiptr->write(c);
MAA 27:efd122db8855 64 *csptr = 1; //chip select to end data transmission
MAA 27:efd122db8855 65 wait_us(2);
MAA 27:efd122db8855 66 };
MAA 27:efd122db8855 67
MAA 27:efd122db8855 68
MAA 27:efd122db8855 69 void EA_OLED(){
MAA 27:efd122db8855 70 //clear l1 and l2
MAA 27:efd122db8855 71
MAA 27:efd122db8855 72 l1 = "";
MAA 27:efd122db8855 73 l2 = "";
MAA 27:efd122db8855 74
MAA 27:efd122db8855 75 spiptr = new SPI(p5, p6, p7);
MAA 27:efd122db8855 76 csptr = new DigitalOut(p8);
MAA 27:efd122db8855 77
MAA 27:efd122db8855 78 *csptr = 1; //high at idle
MAA 27:efd122db8855 79
MAA 27:efd122db8855 80 spiptr->format(10,3); //10bit, high steady state clock
MAA 27:efd122db8855 81 spiptr->frequency(1000000); //1MHz spi clock
MAA 27:efd122db8855 82
MAA 27:efd122db8855 83
MAA 27:efd122db8855 84 //function set european chararacter set
MAA 27:efd122db8855 85 init_config(0x39);
MAA 27:efd122db8855 86 //display off
MAA 27:efd122db8855 87 init_config(0x08);
MAA 27:efd122db8855 88 //entry mode set increment cursor by 1 not shifting display
MAA 27:efd122db8855 89 init_config(0x06);
MAA 27:efd122db8855 90 //Character mode and internel power on
MAA 27:efd122db8855 91 init_config(0x17);
MAA 27:efd122db8855 92 //clear display
MAA 27:efd122db8855 93 init_config(0x01);
MAA 27:efd122db8855 94 //return home
MAA 27:efd122db8855 95 init_config(0x02);
MAA 27:efd122db8855 96 //display on
MAA 27:efd122db8855 97 init_config(0x0C);
MAA 27:efd122db8855 98 wait_ms(10); //Time to stabilize (wont work without)
MAA 27:efd122db8855 99
MAA 27:efd122db8855 100
MAA 27:efd122db8855 101 };
MAA 8:d6287c33b54a 102
MAA 8:d6287c33b54a 103
MAA 27:efd122db8855 104 void clear_display(){
MAA 27:efd122db8855 105 //clear display
MAA 28:ed0d29f63b55 106 *csptr = 0; //chip select to start data transmission
MAA 28:ed0d29f63b55 107 spiptr->write(0x01);
MAA 28:ed0d29f63b55 108 *csptr = 1; //chip select to end data transmission
MAA 28:ed0d29f63b55 109 Thread::wait(1);
MAA 27:efd122db8855 110 };
MAA 8:d6287c33b54a 111
MAA 27:efd122db8855 112 void clear_display_waiting(){
MAA 27:efd122db8855 113 //clear display
MAA 27:efd122db8855 114 init_config(0x01);
MAA 28:ed0d29f63b55 115 wait_ms(1);
MAA 27:efd122db8855 116 };
MAA 27:efd122db8855 117
MAA 27:efd122db8855 118 void write_lines(){
MAA 27:efd122db8855 119
MAA 27:efd122db8855 120 //cursor return
MAA 27:efd122db8855 121 *csptr = 0; //chip select to start data transmission
MAA 27:efd122db8855 122 spiptr->write(0x02);
MAA 27:efd122db8855 123 *csptr = 1; //chip select to end data transmission
MAA 27:efd122db8855 124 Thread::wait(1);
MAA 27:efd122db8855 125
MAA 27:efd122db8855 126 //write l1
MAA 27:efd122db8855 127 for(int i = 0; i < strlen(l1.c_str()); i++){
MAA 27:efd122db8855 128 *csptr = 0; //chip select to start data transmission
MAA 27:efd122db8855 129 spiptr->write(0x200 | l1[i]); //add 0x02 for character transmission
MAA 27:efd122db8855 130 *csptr = 1; //chip select to end data transmission
MAA 28:ed0d29f63b55 131 Thread::wait(1);
MAA 27:efd122db8855 132 }
MAA 27:efd122db8855 133
MAA 27:efd122db8855 134 //cursor return + cursor pos set
MAA 28:ed0d29f63b55 135 *csptr = 0; //chip select to start data transmission
MAA 28:ed0d29f63b55 136 spiptr->write(0x02);
MAA 28:ed0d29f63b55 137 *csptr = 1; //chip select to end data transmission
MAA 27:efd122db8855 138 Thread::wait(1);
MAA 28:ed0d29f63b55 139
MAA 27:efd122db8855 140 for(int i = 0; i < 64; i++){
MAA 27:efd122db8855 141 *csptr = 0; //chip select to start data transmission
MAA 27:efd122db8855 142 spiptr->write(0x14);
MAA 27:efd122db8855 143 *csptr = 1; //chip select to end data transmission
MAA 28:ed0d29f63b55 144 wait_us(2);
MAA 27:efd122db8855 145 }
MAA 28:ed0d29f63b55 146
MAA 27:efd122db8855 147
MAA 27:efd122db8855 148 //write l2
MAA 27:efd122db8855 149 for(int i = 0; i < strlen(l2.c_str()); i++){
MAA 27:efd122db8855 150 *csptr = 0; //chip select to start data transmission
MAA 27:efd122db8855 151 spiptr->write(0x200 | l2[i]); //add 0x02 for character transmission
MAA 27:efd122db8855 152 *csptr = 1; //chip select to end data transmission
MAA 27:efd122db8855 153 Thread::wait(1);
MAA 28:ed0d29f63b55 154 }
MAA 27:efd122db8855 155 };
MAA 27:efd122db8855 156