Several examples run on only mbed-os5.13.0 (not 5.14.0)
Dependencies: BD_SD_DISCO_F769NI BSP_DISCO_F769NI LCD_DISCO_F769NI TS_DISCO_F769NI USBHost_F769NI
Nioi_main_copy1.cpp@3:35ac9ee7d2d6, 2019-08-07 (annotated)
- Committer:
- kenjiArai
- Date:
- Wed Aug 07 05:39:01 2019 +0000
- Revision:
- 3:35ac9ee7d2d6
1st trial revision (Not finalized yet)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kenjiArai | 3:35ac9ee7d2d6 | 1 | /* |
kenjiArai | 3:35ac9ee7d2d6 | 2 | * Mbed Application program / Nioi Sensor |
kenjiArai | 3:35ac9ee7d2d6 | 3 | * |
kenjiArai | 3:35ac9ee7d2d6 | 4 | * Created: July 28th, 2019 |
kenjiArai | 3:35ac9ee7d2d6 | 5 | * Revised: August 1st, 2019 |
kenjiArai | 3:35ac9ee7d2d6 | 6 | */ |
kenjiArai | 3:35ac9ee7d2d6 | 7 | |
kenjiArai | 3:35ac9ee7d2d6 | 8 | //#include "select_program.h" |
kenjiArai | 3:35ac9ee7d2d6 | 9 | #ifdef NIOI_SENSOR |
kenjiArai | 3:35ac9ee7d2d6 | 10 | |
kenjiArai | 3:35ac9ee7d2d6 | 11 | // Include -------------------------------------------------------------------- |
kenjiArai | 3:35ac9ee7d2d6 | 12 | #include <stdlib.h> |
kenjiArai | 3:35ac9ee7d2d6 | 13 | #include <stdlib.h> |
kenjiArai | 3:35ac9ee7d2d6 | 14 | #include <stdio.h> |
kenjiArai | 3:35ac9ee7d2d6 | 15 | #include <string> |
kenjiArai | 3:35ac9ee7d2d6 | 16 | #include <errno.h> |
kenjiArai | 3:35ac9ee7d2d6 | 17 | #include "mbed.h" |
kenjiArai | 3:35ac9ee7d2d6 | 18 | #include "stm32f769i_discovery.h" |
kenjiArai | 3:35ac9ee7d2d6 | 19 | #include "stm32f769i_discovery_audio.h" |
kenjiArai | 3:35ac9ee7d2d6 | 20 | #include "EthernetInterface.h" |
kenjiArai | 3:35ac9ee7d2d6 | 21 | #include "TCPServer.h" |
kenjiArai | 3:35ac9ee7d2d6 | 22 | #include "TCPSocket.h" |
kenjiArai | 3:35ac9ee7d2d6 | 23 | #include "TS_DISCO_F769NI.h" |
kenjiArai | 3:35ac9ee7d2d6 | 24 | #include "LCD_DISCO_F769NI.h" |
kenjiArai | 3:35ac9ee7d2d6 | 25 | #include "USBHostMSD.h" |
kenjiArai | 3:35ac9ee7d2d6 | 26 | #include "FATFileSystem.h" |
kenjiArai | 3:35ac9ee7d2d6 | 27 | #include "SDBlockDeviceDISCOF769NI.h" |
kenjiArai | 3:35ac9ee7d2d6 | 28 | #include "mon.h" |
kenjiArai | 3:35ac9ee7d2d6 | 29 | #include "button_group.hpp" |
kenjiArai | 3:35ac9ee7d2d6 | 30 | |
kenjiArai | 3:35ac9ee7d2d6 | 31 | // Definition ----------------------------------------------------------------- |
kenjiArai | 3:35ac9ee7d2d6 | 32 | using namespace Mikami; |
kenjiArai | 3:35ac9ee7d2d6 | 33 | |
kenjiArai | 3:35ac9ee7d2d6 | 34 | #define LEDON 1 |
kenjiArai | 3:35ac9ee7d2d6 | 35 | #define LEDOFF 0 |
kenjiArai | 3:35ac9ee7d2d6 | 36 | |
kenjiArai | 3:35ac9ee7d2d6 | 37 | #define FOREVER 0x7fffffff |
kenjiArai | 3:35ac9ee7d2d6 | 38 | |
kenjiArai | 3:35ac9ee7d2d6 | 39 | #define DEBUG 0 |
kenjiArai | 3:35ac9ee7d2d6 | 40 | |
kenjiArai | 3:35ac9ee7d2d6 | 41 | #if DEBUG |
kenjiArai | 3:35ac9ee7d2d6 | 42 | #define DBG(...) pc.printf(__VA_ARGS__) |
kenjiArai | 3:35ac9ee7d2d6 | 43 | #else |
kenjiArai | 3:35ac9ee7d2d6 | 44 | #define DBG(...) {;} |
kenjiArai | 3:35ac9ee7d2d6 | 45 | #endif |
kenjiArai | 3:35ac9ee7d2d6 | 46 | |
kenjiArai | 3:35ac9ee7d2d6 | 47 | struct PointF { |
kenjiArai | 3:35ac9ee7d2d6 | 48 | PointF() {} |
kenjiArai | 3:35ac9ee7d2d6 | 49 | PointF(float x0, float y0) : x(x0), y(y0) {} |
kenjiArai | 3:35ac9ee7d2d6 | 50 | float x, y; |
kenjiArai | 3:35ac9ee7d2d6 | 51 | }; |
kenjiArai | 3:35ac9ee7d2d6 | 52 | |
kenjiArai | 3:35ac9ee7d2d6 | 53 | // Constructor ---------------------------------------------------------------- |
kenjiArai | 3:35ac9ee7d2d6 | 54 | LCD_DISCO_F769NI lcd; |
kenjiArai | 3:35ac9ee7d2d6 | 55 | TS_DISCO_F769NI ts; |
kenjiArai | 3:35ac9ee7d2d6 | 56 | Serial pc(SERIAL_TX, SERIAL_RX, 115200); |
kenjiArai | 3:35ac9ee7d2d6 | 57 | DigitalIn userSW(BUTTON1); |
kenjiArai | 3:35ac9ee7d2d6 | 58 | DigitalOut led_red(LED1); |
kenjiArai | 3:35ac9ee7d2d6 | 59 | DigitalOut led_green0(LED2); |
kenjiArai | 3:35ac9ee7d2d6 | 60 | DigitalOut led_green1(LED3); |
kenjiArai | 3:35ac9ee7d2d6 | 61 | SDBlockDeviceDISCOF769NI bd; |
kenjiArai | 3:35ac9ee7d2d6 | 62 | FATFileSystem fs("fs"); |
kenjiArai | 3:35ac9ee7d2d6 | 63 | USBHostMSD msd; |
kenjiArai | 3:35ac9ee7d2d6 | 64 | |
kenjiArai | 3:35ac9ee7d2d6 | 65 | // RAM ------------------------------------------------------------------------ |
kenjiArai | 3:35ac9ee7d2d6 | 66 | bool flag_opening_done = false; |
kenjiArai | 3:35ac9ee7d2d6 | 67 | |
kenjiArai | 3:35ac9ee7d2d6 | 68 | // ROM / Constant data -------------------------------------------------------- |
kenjiArai | 3:35ac9ee7d2d6 | 69 | const int X0 = 0; // origin of x axis |
kenjiArai | 3:35ac9ee7d2d6 | 70 | const int Y0 = 0; // origin of y axis |
kenjiArai | 3:35ac9ee7d2d6 | 71 | |
kenjiArai | 3:35ac9ee7d2d6 | 72 | const int NX = 670; // number of pixels for horizon |
kenjiArai | 3:35ac9ee7d2d6 | 73 | const int NY = 542; // number of pixels for vertical |
kenjiArai | 3:35ac9ee7d2d6 | 74 | |
kenjiArai | 3:35ac9ee7d2d6 | 75 | // Function prototypes -------------------------------------------------------- |
kenjiArai | 3:35ac9ee7d2d6 | 76 | static void tsk_0(void const *args); |
kenjiArai | 3:35ac9ee7d2d6 | 77 | static void tsk_1(void const *args); |
kenjiArai | 3:35ac9ee7d2d6 | 78 | static void tsk_2(void const *args); |
kenjiArai | 3:35ac9ee7d2d6 | 79 | static void tsk_3(void const *args); |
kenjiArai | 3:35ac9ee7d2d6 | 80 | |
kenjiArai | 3:35ac9ee7d2d6 | 81 | //extern void time_enter_mode(void); |
kenjiArai | 3:35ac9ee7d2d6 | 82 | static void goto_standby(void); |
kenjiArai | 3:35ac9ee7d2d6 | 83 | |
kenjiArai | 3:35ac9ee7d2d6 | 84 | //extern void drawImage(const char * name, uint16_t x, uint16_t y); |
kenjiArai | 3:35ac9ee7d2d6 | 85 | extern void draw_bitmap(uint8_t *Name_BMP, uint32_t Xpos, uint32_t Ypos); |
kenjiArai | 3:35ac9ee7d2d6 | 86 | extern void task_opening_action(void const *args); |
kenjiArai | 3:35ac9ee7d2d6 | 87 | |
kenjiArai | 3:35ac9ee7d2d6 | 88 | //------------------------------------------------------------------------------ |
kenjiArai | 3:35ac9ee7d2d6 | 89 | // Control Program |
kenjiArai | 3:35ac9ee7d2d6 | 90 | //------------------------------------------------------------------------------ |
kenjiArai | 3:35ac9ee7d2d6 | 91 | osThreadDef(task_opening_action, osPriorityNormal,4096); |
kenjiArai | 3:35ac9ee7d2d6 | 92 | osThreadDef(tsk_1, osPriorityNormal,4096); |
kenjiArai | 3:35ac9ee7d2d6 | 93 | osThreadDef(tsk_2, osPriorityNormal,4096); |
kenjiArai | 3:35ac9ee7d2d6 | 94 | osThreadDef(tsk_3, osPriorityNormal,4096); |
kenjiArai | 3:35ac9ee7d2d6 | 95 | |
kenjiArai | 3:35ac9ee7d2d6 | 96 | int main() |
kenjiArai | 3:35ac9ee7d2d6 | 97 | { |
kenjiArai | 3:35ac9ee7d2d6 | 98 | flag_opening_done = false; |
kenjiArai | 3:35ac9ee7d2d6 | 99 | osThreadId id0, id1, id2, id3; |
kenjiArai | 3:35ac9ee7d2d6 | 100 | DBG("line:%d\r\n", __LINE__); |
kenjiArai | 3:35ac9ee7d2d6 | 101 | id0 = osThreadCreate(osThread(task_opening_action), NULL); |
kenjiArai | 3:35ac9ee7d2d6 | 102 | while (flag_opening_done == false) { |
kenjiArai | 3:35ac9ee7d2d6 | 103 | DBG("line:%d\r\n", __LINE__); |
kenjiArai | 3:35ac9ee7d2d6 | 104 | ThisThread::sleep_for(100); |
kenjiArai | 3:35ac9ee7d2d6 | 105 | } |
kenjiArai | 3:35ac9ee7d2d6 | 106 | osThreadTerminate(id0); |
kenjiArai | 3:35ac9ee7d2d6 | 107 | // |
kenjiArai | 3:35ac9ee7d2d6 | 108 | id1 = osThreadCreate(osThread(tsk_1), NULL); |
kenjiArai | 3:35ac9ee7d2d6 | 109 | id2 = osThreadCreate(osThread(tsk_2), NULL); |
kenjiArai | 3:35ac9ee7d2d6 | 110 | id3 = osThreadCreate(osThread(tsk_3), NULL); |
kenjiArai | 3:35ac9ee7d2d6 | 111 | pc.printf("id0=0x%x, id1=0x%x, id2=0x%x, id3=0x%x\r\n", |
kenjiArai | 3:35ac9ee7d2d6 | 112 | (uint32_t)id0, (uint32_t)id1, (uint32_t)id2, (uint32_t)id3); |
kenjiArai | 3:35ac9ee7d2d6 | 113 | while(true) { |
kenjiArai | 3:35ac9ee7d2d6 | 114 | ThisThread::sleep_for(FOREVER); |
kenjiArai | 3:35ac9ee7d2d6 | 115 | } |
kenjiArai | 3:35ac9ee7d2d6 | 116 | } |
kenjiArai | 3:35ac9ee7d2d6 | 117 | |
kenjiArai | 3:35ac9ee7d2d6 | 118 | void tsk_1(void const *args) |
kenjiArai | 3:35ac9ee7d2d6 | 119 | { |
kenjiArai | 3:35ac9ee7d2d6 | 120 | while(true) { |
kenjiArai | 3:35ac9ee7d2d6 | 121 | led_red = LEDON; |
kenjiArai | 3:35ac9ee7d2d6 | 122 | ThisThread::sleep_for(1000); |
kenjiArai | 3:35ac9ee7d2d6 | 123 | led_red = LEDOFF; |
kenjiArai | 3:35ac9ee7d2d6 | 124 | ThisThread::sleep_for(1000); |
kenjiArai | 3:35ac9ee7d2d6 | 125 | } |
kenjiArai | 3:35ac9ee7d2d6 | 126 | } |
kenjiArai | 3:35ac9ee7d2d6 | 127 | |
kenjiArai | 3:35ac9ee7d2d6 | 128 | void tsk_2(void const *args) |
kenjiArai | 3:35ac9ee7d2d6 | 129 | { |
kenjiArai | 3:35ac9ee7d2d6 | 130 | while(true) { |
kenjiArai | 3:35ac9ee7d2d6 | 131 | led_green0 = LEDON; |
kenjiArai | 3:35ac9ee7d2d6 | 132 | ThisThread::sleep_for(1500); |
kenjiArai | 3:35ac9ee7d2d6 | 133 | led_green0 = LEDOFF; |
kenjiArai | 3:35ac9ee7d2d6 | 134 | ThisThread::sleep_for(1500); |
kenjiArai | 3:35ac9ee7d2d6 | 135 | } |
kenjiArai | 3:35ac9ee7d2d6 | 136 | } |
kenjiArai | 3:35ac9ee7d2d6 | 137 | |
kenjiArai | 3:35ac9ee7d2d6 | 138 | void tsk_3(void const *args) |
kenjiArai | 3:35ac9ee7d2d6 | 139 | { |
kenjiArai | 3:35ac9ee7d2d6 | 140 | while(true) { |
kenjiArai | 3:35ac9ee7d2d6 | 141 | led_green1 = LEDON; |
kenjiArai | 3:35ac9ee7d2d6 | 142 | ThisThread::sleep_for(2000); |
kenjiArai | 3:35ac9ee7d2d6 | 143 | led_green1 = LEDOFF; |
kenjiArai | 3:35ac9ee7d2d6 | 144 | ThisThread::sleep_for(2000); |
kenjiArai | 3:35ac9ee7d2d6 | 145 | } |
kenjiArai | 3:35ac9ee7d2d6 | 146 | } |
kenjiArai | 3:35ac9ee7d2d6 | 147 | |
kenjiArai | 3:35ac9ee7d2d6 | 148 | void goto_standby(void) |
kenjiArai | 3:35ac9ee7d2d6 | 149 | { |
kenjiArai | 3:35ac9ee7d2d6 | 150 | ThisThread::sleep_for(0x7fffffff); // sleep 24 days |
kenjiArai | 3:35ac9ee7d2d6 | 151 | } |
kenjiArai | 3:35ac9ee7d2d6 | 152 | |
kenjiArai | 3:35ac9ee7d2d6 | 153 | #endif |