Bmag incl gps rettelse

Dependencies:   mbed WDT MODSERIAL BME280

Committer:
MAA
Date:
Fri Feb 15 12:53:30 2019 +0000
Branch:
MbedBMAGThrRev
Revision:
55:06c5f76e1a8c
Parent:
54:d4d20a744b87
almost at FW version 1.0.0.6

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