B+IMU+SD

Dependencies:   BMI160 RTC SDFileSystem USBDevice max32630fthr sd-driver

Fork of MPSMAXbutton by Faizan Ahmad

Committer:
FaizanAhmad
Date:
Wed May 09 11:01:18 2018 +0000
Revision:
3:bd223559f79b
Parent:
0:769c5a7b3939
bUTTON+IMU+SD

Who changed what in which revision?

UserRevisionLine numberNew contents of line
FaizanAhmad 0:769c5a7b3939 1 #include "mbed.h"
FaizanAhmad 0:769c5a7b3939 2 #include "max32630fthr.h"
FaizanAhmad 0:769c5a7b3939 3 #include "USBSerial.h"
FaizanAhmad 0:769c5a7b3939 4 #include "Default.h"
FaizanAhmad 0:769c5a7b3939 5 #include "DefaultRequired.h"
FaizanAhmad 3:bd223559f79b 6 #include <stdlib.h>
FaizanAhmad 0:769c5a7b3939 7 #include "main.h"
FaizanAhmad 3:bd223559f79b 8 #include "files.h"
FaizanAhmad 3:bd223559f79b 9 #include "IMU.h"
FaizanAhmad 3:bd223559f79b 10 #include "RTClock.h"
FaizanAhmad 0:769c5a7b3939 11
FaizanAhmad 0:769c5a7b3939 12 MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3);
FaizanAhmad 0:769c5a7b3939 13 Serial _serialport(USBTX,USBRX);
FaizanAhmad 0:769c5a7b3939 14 DigitalOut LED(P3_1);
FaizanAhmad 0:769c5a7b3939 15 DigitalOut Ctrl(P6_0);
FaizanAhmad 0:769c5a7b3939 16
FaizanAhmad 0:769c5a7b3939 17 DigitalOut rLED(LED1);
FaizanAhmad 0:769c5a7b3939 18 DigitalOut gLED(LED2);
FaizanAhmad 0:769c5a7b3939 19
FaizanAhmad 0:769c5a7b3939 20
FaizanAhmad 0:769c5a7b3939 21 void Rx_interrupt(void);
FaizanAhmad 0:769c5a7b3939 22
FaizanAhmad 0:769c5a7b3939 23 Default default_SM;
FaizanAhmad 0:769c5a7b3939 24 bool is_smactive;
FaizanAhmad 0:769c5a7b3939 25
FaizanAhmad 0:769c5a7b3939 26 // main() runs in its own thread in the OS
FaizanAhmad 0:769c5a7b3939 27 // (note the calls to Thread::wait below for delays)
FaizanAhmad 0:769c5a7b3939 28 int main()
FaizanAhmad 0:769c5a7b3939 29 {
FaizanAhmad 0:769c5a7b3939 30 _serialport.attach(&Rx_interrupt);
FaizanAhmad 0:769c5a7b3939 31 gLED = LED_ON;
FaizanAhmad 0:769c5a7b3939 32 rLED = LED_ON;
FaizanAhmad 3:bd223559f79b 33
FaizanAhmad 3:bd223559f79b 34
FaizanAhmad 3:bd223559f79b 35 // _serialport.printf("before init\r\n");
FaizanAhmad 3:bd223559f79b 36
FaizanAhmad 3:bd223559f79b 37 if(initSDCard() == 0) {
FaizanAhmad 3:bd223559f79b 38 _serialport.printf("SD init OK!\n");
FaizanAhmad 0:769c5a7b3939 39 }
FaizanAhmad 3:bd223559f79b 40
FaizanAhmad 3:bd223559f79b 41 if(initIMU() == 0) {
FaizanAhmad 3:bd223559f79b 42 _serialport.printf("IMU init OK!\n");
FaizanAhmad 3:bd223559f79b 43 }
FaizanAhmad 3:bd223559f79b 44
FaizanAhmad 3:bd223559f79b 45 //readFileNames();
FaizanAhmad 3:bd223559f79b 46 //initRTC();
FaizanAhmad 3:bd223559f79b 47
FaizanAhmad 0:769c5a7b3939 48 /* initialize state machine*/
FaizanAhmad 0:769c5a7b3939 49 default_init(&default_SM);
FaizanAhmad 0:769c5a7b3939 50 default_enter(&default_SM);
FaizanAhmad 0:769c5a7b3939 51 is_smactive = false;
FaizanAhmad 3:bd223559f79b 52
FaizanAhmad 3:bd223559f79b 53 while(1) {
FaizanAhmad 3:bd223559f79b 54 if(is_smactive == true) {
FaizanAhmad 3:bd223559f79b 55 // _serialport.printf("state active\n");
FaizanAhmad 0:769c5a7b3939 56 is_smactive = false;
FaizanAhmad 3:bd223559f79b 57 default_runCycle(&default_SM);
FaizanAhmad 3:bd223559f79b 58 }
FaizanAhmad 0:769c5a7b3939 59 }
FaizanAhmad 0:769c5a7b3939 60 }
FaizanAhmad 0:769c5a7b3939 61
FaizanAhmad 0:769c5a7b3939 62 /* Call back from Interrupt when Receiving Serial data*/
FaizanAhmad 0:769c5a7b3939 63
FaizanAhmad 0:769c5a7b3939 64 void Rx_interrupt(void)
FaizanAhmad 0:769c5a7b3939 65 {
FaizanAhmad 0:769c5a7b3939 66 char keypress = '\0';
FaizanAhmad 0:769c5a7b3939 67 keypress = _serialport.getc();
FaizanAhmad 0:769c5a7b3939 68 /**Actions on received data*/
FaizanAhmad 0:769c5a7b3939 69 switch(keypress) {
FaizanAhmad 0:769c5a7b3939 70 default:
FaizanAhmad 0:769c5a7b3939 71 break;
FaizanAhmad 0:769c5a7b3939 72
FaizanAhmad 0:769c5a7b3939 73 case 'Q':
FaizanAhmad 3:bd223559f79b 74 // _serialport.printf("Q");
FaizanAhmad 0:769c5a7b3939 75 defaultIface_raise_mode(&default_SM);
FaizanAhmad 0:769c5a7b3939 76 is_smactive = true;
FaizanAhmad 0:769c5a7b3939 77 break;
FaizanAhmad 0:769c5a7b3939 78
FaizanAhmad 0:769c5a7b3939 79 case 'W':
FaizanAhmad 3:bd223559f79b 80 //_serialport.printf("W ");
FaizanAhmad 0:769c5a7b3939 81 defaultIface_raise_up(&default_SM);
FaizanAhmad 0:769c5a7b3939 82 is_smactive = true;
FaizanAhmad 0:769c5a7b3939 83 break;
FaizanAhmad 0:769c5a7b3939 84
FaizanAhmad 0:769c5a7b3939 85 case 'E':
FaizanAhmad 3:bd223559f79b 86 //_serialport.printf("E ");
FaizanAhmad 0:769c5a7b3939 87 defaultIface_raise_down(&default_SM);
FaizanAhmad 0:769c5a7b3939 88 is_smactive = true;
FaizanAhmad 0:769c5a7b3939 89 break;
FaizanAhmad 0:769c5a7b3939 90
FaizanAhmad 0:769c5a7b3939 91 case 'R':
FaizanAhmad 3:bd223559f79b 92 //_serialport.printf("R ");
FaizanAhmad 0:769c5a7b3939 93 defaultIface_raise_back(&default_SM);
FaizanAhmad 0:769c5a7b3939 94 is_smactive = true;
FaizanAhmad 0:769c5a7b3939 95 break;
FaizanAhmad 0:769c5a7b3939 96
FaizanAhmad 0:769c5a7b3939 97 case 'T':
FaizanAhmad 3:bd223559f79b 98 //_serialport.printf("T ");
FaizanAhmad 0:769c5a7b3939 99 defaultIface_raise_home(&default_SM);
FaizanAhmad 0:769c5a7b3939 100 is_smactive = true;
FaizanAhmad 0:769c5a7b3939 101 break;
FaizanAhmad 0:769c5a7b3939 102 }
FaizanAhmad 0:769c5a7b3939 103
FaizanAhmad 0:769c5a7b3939 104 }
FaizanAhmad 0:769c5a7b3939 105
FaizanAhmad 0:769c5a7b3939 106 void PrintStatus_Serial(int val )
FaizanAhmad 0:769c5a7b3939 107 {
FaizanAhmad 3:bd223559f79b 108 switch(val) {
FaizanAhmad 0:769c5a7b3939 109 case 1:
FaizanAhmad 3:bd223559f79b 110 _serialport.printf("Menu ");
FaizanAhmad 3:bd223559f79b 111 break;
FaizanAhmad 3:bd223559f79b 112
FaizanAhmad 0:769c5a7b3939 113 case 2:
FaizanAhmad 3:bd223559f79b 114 _serialport.printf("function ");
FaizanAhmad 3:bd223559f79b 115 break;
FaizanAhmad 3:bd223559f79b 116
FaizanAhmad 0:769c5a7b3939 117 case 3:
FaizanAhmad 3:bd223559f79b 118 _serialport.printf("execute ");
FaizanAhmad 3:bd223559f79b 119 break;
FaizanAhmad 3:bd223559f79b 120
FaizanAhmad 0:769c5a7b3939 121 case 4:
FaizanAhmad 3:bd223559f79b 122 _serialport.printf("ready\n");
FaizanAhmad 3:bd223559f79b 123 break;
FaizanAhmad 3:bd223559f79b 124
FaizanAhmad 0:769c5a7b3939 125 case 5:
FaizanAhmad 3:bd223559f79b 126 _serialport.printf("active\n");
FaizanAhmad 3:bd223559f79b 127 break;
FaizanAhmad 3:bd223559f79b 128
FaizanAhmad 0:769c5a7b3939 129 case 6:
FaizanAhmad 3:bd223559f79b 130 _serialport.printf("alarm\n");
FaizanAhmad 3:bd223559f79b 131 break;
FaizanAhmad 3:bd223559f79b 132
FaizanAhmad 3:bd223559f79b 133 case 7:
FaizanAhmad 3:bd223559f79b 134 _serialport.printf("move down act\n");
FaizanAhmad 3:bd223559f79b 135 break;
FaizanAhmad 3:bd223559f79b 136
FaizanAhmad 3:bd223559f79b 137 case 8:
FaizanAhmad 3:bd223559f79b 138 _serialport.printf("move up act\n");
FaizanAhmad 3:bd223559f79b 139 break;
FaizanAhmad 3:bd223559f79b 140
FaizanAhmad 0:769c5a7b3939 141 case 9:
FaizanAhmad 3:bd223559f79b 142 _serialport.printf("return\n");
FaizanAhmad 3:bd223559f79b 143 break;
FaizanAhmad 3:bd223559f79b 144
FaizanAhmad 0:769c5a7b3939 145 default:
FaizanAhmad 3:bd223559f79b 146 break;
FaizanAhmad 0:769c5a7b3939 147 }
FaizanAhmad 0:769c5a7b3939 148
FaizanAhmad 3:bd223559f79b 149 }