afLib 1.3 which is supporting both SPI and UART
Dependencies: vt100 mbed afLib_1_3
main.cpp@1:90652e9012b9, 2019-01-21 (annotated)
- Committer:
- Rhyme
- Date:
- Mon Jan 21 05:40:03 2019 +0000
- Revision:
- 1:90652e9012b9
- Parent:
- 0:87662653a3c6
test afLib1.3, test program of afLib 1.3(?) supporting SPI and UART
Who changed what in which revision?
| User | Revision | Line number | New 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 |