afLib 1.3 which is supporting both SPI and UART

Dependencies:   vt100 mbed afLib_1_3

Committer:
Rhyme
Date:
Mon Apr 23 06:15:26 2018 +0000
Revision:
0:87662653a3c6
First UART working version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Rhyme 0:87662653a3c6 1 #include "mbed.h"
Rhyme 0:87662653a3c6 2 #include "vt100.h"
Rhyme 0:87662653a3c6 3
Rhyme 0:87662653a3c6 4 #include "af_mgr.h"
Rhyme 0:87662653a3c6 5 #include "af_attributes.h"
Rhyme 0:87662653a3c6 6 #include "edge_mgr.h"
Rhyme 0:87662653a3c6 7 #include "edge_pin.h"
Rhyme 0:87662653a3c6 8 #include "edge_time.h"
Rhyme 0:87662653a3c6 9 #include "edge_reset_mgr.h"
Rhyme 0:87662653a3c6 10
Rhyme 0:87662653a3c6 11 vt100 *tty = 0 ;
Rhyme 0:87662653a3c6 12 uint32_t wait_tolerance = 500 ; /* 5sec */
Rhyme 0:87662653a3c6 13 uint32_t connect_tolerance = 60 ; /* after 60 trials, reboot */
Rhyme 0:87662653a3c6 14 uint32_t wait_count = 0 ;
Rhyme 0:87662653a3c6 15 uint32_t connect_trial_count = 0 ;
Rhyme 0:87662653a3c6 16
Rhyme 0:87662653a3c6 17 DigitalOut *led_r = 0 ;
Rhyme 0:87662653a3c6 18 DigitalOut *led_g = 0 ;
Rhyme 0:87662653a3c6 19 DigitalOut *led_b = 0 ;
Rhyme 0:87662653a3c6 20 // DigitalOut myled(LED1);
Rhyme 0:87662653a3c6 21
Rhyme 0:87662653a3c6 22 void doLEDs(int num)
Rhyme 0:87662653a3c6 23 {
Rhyme 0:87662653a3c6 24 if (num & 0x01) { *led_b = 0 ; } else { *led_b = 1 ; }
Rhyme 0:87662653a3c6 25 if (num & 0x02) { *led_g = 0 ; } else { *led_g = 1 ; }
Rhyme 0:87662653a3c6 26 if (num & 0x04) { *led_r = 0 ; } else { *led_r = 1 ; }
Rhyme 0:87662653a3c6 27 }
Rhyme 0:87662653a3c6 28
Rhyme 0:87662653a3c6 29 /**
Rhyme 0:87662653a3c6 30 * wait_connection
Rhyme 0:87662653a3c6 31 * When gConnected == false, which is connection is lost.
Rhyme 0:87662653a3c6 32 * Each 5sec check attribute ATTR_WIFI_STDY_STATE to see
Rhyme 0:87662653a3c6 33 * if the connection has recovered.
Rhyme 0:87662653a3c6 34 * Meantime even if connection is established communicated
Rhyme 0:87662653a3c6 35 * data is invalid, so AF_SYSTEM_ASR_STATE is also
Rhyme 0:87662653a3c6 36 * checked for gLinked ;
Rhyme 0:87662653a3c6 37 * And in case connect_tolerance trials failed
Rhyme 0:87662653a3c6 38 * try to reboot the system if it can improve the situation.
Rhyme 0:87662653a3c6 39 */
Rhyme 0:87662653a3c6 40 void wait_connection(void)
Rhyme 0:87662653a3c6 41 {
Rhyme 0:87662653a3c6 42 int result ;
Rhyme 0:87662653a3c6 43 wait_count++ ;
Rhyme 0:87662653a3c6 44 if (wait_count > wait_tolerance) {
Rhyme 0:87662653a3c6 45 if (gConnected == false) {
Rhyme 0:87662653a3c6 46 result = afero->getAttribute(ATTR_WIFI_STDY_STATE) ;
Rhyme 0:87662653a3c6 47 if (result != afSUCCESS) {
Rhyme 0:87662653a3c6 48 print_af_error(result) ;
Rhyme 0:87662653a3c6 49 }
Rhyme 0:87662653a3c6 50 }
Rhyme 0:87662653a3c6 51 if (gLinked == false) {
Rhyme 0:87662653a3c6 52 result = afero->getAttribute(AF_SYSTEM_ASR_STATE) ;
Rhyme 0:87662653a3c6 53 if (result != afSUCCESS) {
Rhyme 0:87662653a3c6 54 print_af_error(result) ;
Rhyme 0:87662653a3c6 55 }
Rhyme 0:87662653a3c6 56 }
Rhyme 0:87662653a3c6 57 connect_trial_count++ ;
Rhyme 0:87662653a3c6 58 if (connect_trial_count > connect_tolerance) {
Rhyme 0:87662653a3c6 59 reboot_edge() ;
Rhyme 0:87662653a3c6 60 }
Rhyme 0:87662653a3c6 61 wait_count = 0 ;
Rhyme 0:87662653a3c6 62 }
Rhyme 0:87662653a3c6 63 }
Rhyme 0:87662653a3c6 64
Rhyme 0:87662653a3c6 65 void init_hardware(void)
Rhyme 0:87662653a3c6 66 {
Rhyme 0:87662653a3c6 67 tty = new vt100(PTA2, PTA1, 115200) ;
Rhyme 0:87662653a3c6 68 // tty->cls() ;
Rhyme 0:87662653a3c6 69 led_r = new DigitalOut(PIN_LED_R, 1) ;
Rhyme 0:87662653a3c6 70 led_g = new DigitalOut(PIN_LED_G, 1) ;
Rhyme 0:87662653a3c6 71 led_b = new DigitalOut(PIN_LED_B, 1) ;
Rhyme 0:87662653a3c6 72 }
Rhyme 0:87662653a3c6 73
Rhyme 0:87662653a3c6 74 #if 1
Rhyme 0:87662653a3c6 75 int main()
Rhyme 0:87662653a3c6 76 {
Rhyme 0:87662653a3c6 77 int led_state = 0 ;
Rhyme 0:87662653a3c6 78 init_hardware() ;
Rhyme 0:87662653a3c6 79 tty->printf("afLib1.3 UART test program (%s)\n", __DATE__) ;
Rhyme 0:87662653a3c6 80 tty->printf("Reset Reason: ") ;
Rhyme 0:87662653a3c6 81 print_reset_reason() ;
Rhyme 0:87662653a3c6 82 init_aflib() ;
Rhyme 0:87662653a3c6 83 tty->printf("afLib 1.3 initialized\n") ;
Rhyme 0:87662653a3c6 84 doLEDs(0x04) ;
Rhyme 0:87662653a3c6 85 init_timer() ;
Rhyme 0:87662653a3c6 86 tty->printf("timer init done\n") ;
Rhyme 0:87662653a3c6 87 while(1) {
Rhyme 0:87662653a3c6 88 afero->loop() ;
Rhyme 0:87662653a3c6 89 if (afero->isIdle()) {
Rhyme 0:87662653a3c6 90 led_state = 0x04 ; /* red */
Rhyme 0:87662653a3c6 91 if (gLinked && gConnected) {
Rhyme 0:87662653a3c6 92 led_state = 0x02 ; /* green */
Rhyme 0:87662653a3c6 93 } else if (gConnected) {
Rhyme 0:87662653a3c6 94 led_state = 0x01 ; /* blue */
Rhyme 0:87662653a3c6 95 } else {
Rhyme 0:87662653a3c6 96 wait_connection() ;
Rhyme 0:87662653a3c6 97 }
Rhyme 0:87662653a3c6 98 doLEDs(led_state) ;
Rhyme 0:87662653a3c6 99 wait_ms(100);
Rhyme 0:87662653a3c6 100 }
Rhyme 0:87662653a3c6 101 }
Rhyme 0:87662653a3c6 102 }
Rhyme 0:87662653a3c6 103 #else
Rhyme 0:87662653a3c6 104 int main()
Rhyme 0:87662653a3c6 105 {
Rhyme 0:87662653a3c6 106 init_hardware() ;
Rhyme 0:87662653a3c6 107 tty->printf("afLib1.3 test program (%s)\n", __DATE__) ;
Rhyme 0:87662653a3c6 108 init_aflib() ;
Rhyme 0:87662653a3c6 109 tty->printf("afLib 1.3 initialized\n") ;
Rhyme 0:87662653a3c6 110 init_timer() ;
Rhyme 0:87662653a3c6 111 tty->printf("timer init done\n") ;
Rhyme 0:87662653a3c6 112 while(1) {
Rhyme 0:87662653a3c6 113 afero->loop() ;
Rhyme 0:87662653a3c6 114 if (afero->isIdle()) {
Rhyme 0:87662653a3c6 115 *led_r = ! (*led_r) ;
Rhyme 0:87662653a3c6 116 wait_ms(100);
Rhyme 0:87662653a3c6 117 }
Rhyme 0:87662653a3c6 118 }
Rhyme 0:87662653a3c6 119 }
Rhyme 0:87662653a3c6 120 #endif