Gas Pressure Display Updated Power control for Pressure sensor added

Dependencies:   UniGraphic mbed vt100

Committer:
Rhyme
Date:
Fri Feb 16 08:27:50 2018 +0000
Revision:
0:37c8ecde13c2
control PSE530 power via PTC5 (pse530_en)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Rhyme 0:37c8ecde13c2 1 #include "mbed.h"
Rhyme 0:37c8ecde13c2 2 #include "vt100.h"
Rhyme 0:37c8ecde13c2 3 #include "afLib.h"
Rhyme 0:37c8ecde13c2 4 #include "af_mgr.h"
Rhyme 0:37c8ecde13c2 5 #include "edge_mgr.h"
Rhyme 0:37c8ecde13c2 6 #include "edge_time.h"
Rhyme 0:37c8ecde13c2 7 #include "edge_reset_mgr.h"
Rhyme 0:37c8ecde13c2 8 /**
Rhyme 0:37c8ecde13c2 9 * afero poc1.5 25-Dec-2017 version
Rhyme 0:37c8ecde13c2 10 * from this version, watch dog timer joined again.
Rhyme 0:37c8ecde13c2 11 */
Rhyme 0:37c8ecde13c2 12
Rhyme 0:37c8ecde13c2 13 vt100 *tty = 0 ;
Rhyme 0:37c8ecde13c2 14 uint32_t wait_tolerance = 500 ; /* 5sec */
Rhyme 0:37c8ecde13c2 15 uint32_t connect_tolerance = 60 ; /* after 60 trials, reboot */
Rhyme 0:37c8ecde13c2 16 uint32_t wait_count = 0 ;
Rhyme 0:37c8ecde13c2 17 uint32_t connect_trial_count = 0 ;
Rhyme 0:37c8ecde13c2 18
Rhyme 0:37c8ecde13c2 19 /**
Rhyme 0:37c8ecde13c2 20 * wait_connection
Rhyme 0:37c8ecde13c2 21 * When gConnected == false, which is connection is lost.
Rhyme 0:37c8ecde13c2 22 * Each 5sec check attribute ATTR_WIFI_STDY_STATE to see
Rhyme 0:37c8ecde13c2 23 * if the connection has recovered.
Rhyme 0:37c8ecde13c2 24 * Meantime even if connection is established communicated
Rhyme 0:37c8ecde13c2 25 * data is invalid, so AF_SYSTEM_ASR_STATE is also
Rhyme 0:37c8ecde13c2 26 * checked for gLinked ;
Rhyme 0:37c8ecde13c2 27 * And in case connect_tolerance trials failed
Rhyme 0:37c8ecde13c2 28 * try to reboot the system if it can improve the situation.
Rhyme 0:37c8ecde13c2 29 */
Rhyme 0:37c8ecde13c2 30 void wait_connection(void)
Rhyme 0:37c8ecde13c2 31 {
Rhyme 0:37c8ecde13c2 32 int result ;
Rhyme 0:37c8ecde13c2 33 wait_count++ ;
Rhyme 0:37c8ecde13c2 34 if (wait_count > wait_tolerance) {
Rhyme 0:37c8ecde13c2 35 reset_watch_dog() ;
Rhyme 0:37c8ecde13c2 36 if (gConnected == false) {
Rhyme 0:37c8ecde13c2 37 result = afero->getAttribute(ATTR_WIFI_STDY_STATE) ;
Rhyme 0:37c8ecde13c2 38 if (result != afSUCCESS) {
Rhyme 0:37c8ecde13c2 39 print_af_error(result) ;
Rhyme 0:37c8ecde13c2 40 }
Rhyme 0:37c8ecde13c2 41 }
Rhyme 0:37c8ecde13c2 42 if (gLinked == false) {
Rhyme 0:37c8ecde13c2 43 result = afero->getAttribute(AF_SYSTEM_ASR_STATE) ;
Rhyme 0:37c8ecde13c2 44 if (result != afSUCCESS) {
Rhyme 0:37c8ecde13c2 45 print_af_error(result) ;
Rhyme 0:37c8ecde13c2 46 }
Rhyme 0:37c8ecde13c2 47 }
Rhyme 0:37c8ecde13c2 48 connect_trial_count++ ;
Rhyme 0:37c8ecde13c2 49 if (connect_trial_count > connect_tolerance) {
Rhyme 0:37c8ecde13c2 50 reboot_edge() ;
Rhyme 0:37c8ecde13c2 51 }
Rhyme 0:37c8ecde13c2 52 wait_count = 0 ;
Rhyme 0:37c8ecde13c2 53 }
Rhyme 0:37c8ecde13c2 54 }
Rhyme 0:37c8ecde13c2 55
Rhyme 0:37c8ecde13c2 56 void init_hardware(void)
Rhyme 0:37c8ecde13c2 57 {
Rhyme 0:37c8ecde13c2 58 int i ;
Rhyme 0:37c8ecde13c2 59 int result ;
Rhyme 0:37c8ecde13c2 60
Rhyme 0:37c8ecde13c2 61 reset_watch_dog() ;
Rhyme 0:37c8ecde13c2 62 init_display() ;
Rhyme 0:37c8ecde13c2 63 reset_watch_dog() ;
Rhyme 0:37c8ecde13c2 64 init_aflib() ;
Rhyme 0:37c8ecde13c2 65 reset_watch_dog() ;
Rhyme 0:37c8ecde13c2 66 init_sensors() ;
Rhyme 0:37c8ecde13c2 67 reset_watch_dog() ;
Rhyme 0:37c8ecde13c2 68 init_timer() ;
Rhyme 0:37c8ecde13c2 69
Rhyme 0:37c8ecde13c2 70 while(true) {
Rhyme 0:37c8ecde13c2 71 reset_watch_dog() ;
Rhyme 0:37c8ecde13c2 72 for (i = 0 ; i < 10 ; i++ ) {
Rhyme 0:37c8ecde13c2 73 afero->loop() ;
Rhyme 0:37c8ecde13c2 74 reset_watch_dog() ;
Rhyme 0:37c8ecde13c2 75 }
Rhyme 0:37c8ecde13c2 76 if ((gLinked == true)&&(gConnected == true)) {
Rhyme 0:37c8ecde13c2 77 wait_count = 0 ;
Rhyme 0:37c8ecde13c2 78 connect_trial_count = 0 ;
Rhyme 0:37c8ecde13c2 79 if (afero->isIdle()) {
Rhyme 0:37c8ecde13c2 80 result = init_edge_attribute() ;
Rhyme 0:37c8ecde13c2 81 if (result == 0) {
Rhyme 0:37c8ecde13c2 82 break ;
Rhyme 0:37c8ecde13c2 83 }
Rhyme 0:37c8ecde13c2 84 }
Rhyme 0:37c8ecde13c2 85 } else { /* gLinked == false */
Rhyme 0:37c8ecde13c2 86 wait_connection() ;
Rhyme 0:37c8ecde13c2 87 }
Rhyme 0:37c8ecde13c2 88 wait_ms(10) ;
Rhyme 0:37c8ecde13c2 89 }
Rhyme 0:37c8ecde13c2 90 do {
Rhyme 0:37c8ecde13c2 91 // while(!afero->isIdle()) {
Rhyme 0:37c8ecde13c2 92 reset_watch_dog() ;
Rhyme 0:37c8ecde13c2 93 for (i = 0 ; i < 10 ; i++ ) {
Rhyme 0:37c8ecde13c2 94 afero->loop() ;
Rhyme 0:37c8ecde13c2 95 wait_ms(100) ;
Rhyme 0:37c8ecde13c2 96 }
Rhyme 0:37c8ecde13c2 97 } while(!afero->isIdle()) ;
Rhyme 0:37c8ecde13c2 98 edge_mgr_status = EDGE_MGR_RUNNING ;
Rhyme 0:37c8ecde13c2 99 }
Rhyme 0:37c8ecde13c2 100
Rhyme 0:37c8ecde13c2 101 // main() runs in its own thread in the OS
Rhyme 0:37c8ecde13c2 102 int main() {
Rhyme 0:37c8ecde13c2 103 static uint32_t count_robin = 0 ;
Rhyme 0:37c8ecde13c2 104
Rhyme 0:37c8ecde13c2 105 tty = new vt100() ;
Rhyme 0:37c8ecde13c2 106 // tty->cls() ;
Rhyme 0:37c8ecde13c2 107 printf("Afero test program (ver. %s) started\n", __DATE__) ;
Rhyme 0:37c8ecde13c2 108 printf("=== Reset Reason ===\n") ;
Rhyme 0:37c8ecde13c2 109 print_reset_reason() ;
Rhyme 0:37c8ecde13c2 110 printf("====================\n") ;
Rhyme 0:37c8ecde13c2 111
Rhyme 0:37c8ecde13c2 112 init_hardware() ;
Rhyme 0:37c8ecde13c2 113
Rhyme 0:37c8ecde13c2 114 edge_splash() ;
Rhyme 0:37c8ecde13c2 115
Rhyme 0:37c8ecde13c2 116 while (true) {
Rhyme 0:37c8ecde13c2 117 count_robin++ ;
Rhyme 0:37c8ecde13c2 118 afero->loop() ;
Rhyme 0:37c8ecde13c2 119 if ((gLinked == true)&&(gConnected == true)) {
Rhyme 0:37c8ecde13c2 120 wait_count = 0 ;
Rhyme 0:37c8ecde13c2 121 connect_trial_count = 0 ;
Rhyme 0:37c8ecde13c2 122 if (afero->isIdle()) {
Rhyme 0:37c8ecde13c2 123 edge_loop(count_robin) ;
Rhyme 0:37c8ecde13c2 124 }
Rhyme 0:37c8ecde13c2 125 } else { /* gLinked == false */
Rhyme 0:37c8ecde13c2 126 wait_connection() ;
Rhyme 0:37c8ecde13c2 127 }
Rhyme 0:37c8ecde13c2 128 wait_ms(10) ;
Rhyme 0:37c8ecde13c2 129 }
Rhyme 0:37c8ecde13c2 130 }