Changeset 200 for rtos_arduino


Ignore:
Timestamp:
Mar 31, 2016, 12:23:49 AM (8 years ago)
Author:
ertl-honda
Message:

マルチタスクのサンプルに変更

Location:
rtos_arduino/trunk/examples/WifiEcho
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • rtos_arduino/trunk/examples/WifiEcho/rca_app.cpp

    r181 r200  
    11#include "rca.h"
     2#include "ESP8266.h"
    23
    34#define SSID       ""
     
    910#define WMODE_STATION
    1011
    11 #include "ESP8266.h"
    12 
    1312ESP8266 wifi;
     13
     14#ifdef MULTI_ECHO_SERVER
     15bool setup_done = false;
     16#endif /* MULTI_ECHO_SERVER */
    1417
    1518void setup()
     
    8083    }
    8184
    82     if (wifi.setTCPServerTimeout(10)) {
    83         Serial.print("set tcp server timout 10 seconds\r\n");
     85    if (wifi.setTCPServerTimeout(60)) {
     86        Serial.print("set tcp server timout 60 seconds\r\n");
    8487    } else {
    8588        Serial.print("set tcp server timout err\r\n");
     
    8790
    8891    Serial.print("setup end\r\n");
    89 }
     92
     93#ifdef MULTI_ECHO_SERVER
     94    setup_done = true;
     95#endif /* MULTI_ECHO_SERVER */   
     96}
     97
     98#define MUX_NULL 0xff
    9099
    91100uint8_t mux_id_ptn;
     101
     102uint8_t mux_id = MUX_NULL;
     103uint8_t task1_mux_id = MUX_NULL;
    92104
    93105void loop()
    94106{
    95     uint8_t mux_id;
    96107    uint8_t buffer[128] = {0};
    97     uint8_t pre_mux_id_ptn;
    98     uint32_t len
    99      
     108    uint8_t pre_mux_id_ptn;   
     109    uint32_t len;
     110    uint32_t i;
     111
     112    delay(1);   
     113    /* Check Connection Status */
    100114    pre_mux_id_ptn = mux_id_ptn;
    101115
    102116    if(!wifi.getMuxCStatus(&mux_id_ptn)) {
    103         Serial.println("isConnected(&mux_id_ptn) : Error!");
    104         while(1);
    105     }
    106    
    107     if (pre_mux_id_ptn != mux_id_ptn) {
    108         Serial.print("Connection Status changed! : 0x");
    109         Serial.println(mux_id_ptn, HEX);
    110     }
    111 
    112     if(!wifi.isDataAvailable()) {
    113         return;
    114     }
    115      
    116     if((len = wifi.recv(&mux_id, buffer, sizeof(buffer))) == 0) {
    117         return;
    118     }
    119 
    120     String cmd = (char*)buffer;
    121    
    122     Serial.print("Web Server Task : Recive Request from mux : ");
     117        Serial.println("getMuxCStatus(&mux_id_ptn) : Error!");
     118    }
     119    else {       
     120        if (pre_mux_id_ptn != mux_id_ptn) {
     121            Serial.print("Connection Status changed! : 0x");
     122            Serial.println(mux_id_ptn, HEX);
     123            if (mux_id_ptn & 0x01) {
     124                mux_id = 0;
     125            }
     126            if (mux_id_ptn & 0x02) {
     127                task1_mux_id = 1;
     128            }
     129        }
     130    }
     131
     132    if (mux_id == MUX_NULL) {
     133        return;
     134    }
     135   
     136    if (!wifi.isConnected(mux_id)) {
     137        Serial.print("Echo Server : Port is closed: ");
     138        Serial.println(mux_id);
     139        mux_id = MUX_NULL;
     140        return;
     141    }
     142   
     143    if((len = wifi.recv(mux_id, buffer, sizeof(buffer))) == 0) {
     144        return;
     145    }
     146
     147    /* Recived Data */
     148
     149    for(i = 0; i < len; i++) {
     150        /* If Recive Ctrl-q(17) */
     151        if(buffer[i] == 17) {
     152            Serial.print("Echo Server : Close port : ");
     153            Serial.println(mux_id);           
     154            wifi.releaseTCP(mux_id);
     155            mux_id = MUX_NULL;
     156            return;
     157        }
     158    }
     159
     160    Serial.print("Echo Server : Recive Data from mux : ");
    123161    Serial.println(mux_id);
    124     Serial.print("Web Server Task : Recive len   : ");
     162    Serial.print("Echo Server : Recive len   : ");
    125163    Serial.println(len);
    126     Serial.print("Web Server Task : Recive Data  : ");
    127     Serial.println(cmd);   
    128    
    129     if(!wifi.send(mux_id, cmd)) {
    130         Serial.println("send(mux_id, cmd) : Error!");
    131         while(1);
    132     }
    133    
    134     wifi.releaseTCP(mux_id);
    135 }
     164    Serial.print("Echo Server : Recive Data  : ");
     165    Serial.println((char*)buffer);
     166   
     167    if(!wifi.send(mux_id, buffer, len)) {
     168        Serial.println("Echo Server : send(mux_id, cmd) : Error!");
     169    }
     170}
     171
     172#ifdef MULTI_ECHO_SERVER
     173/*
     174 *  For TASK1
     175 */
     176void task1_setup() {
     177    while(!setup_done) {
     178        delay(1);
     179    }
     180    Serial.println("Echo Server Task1 : start");
     181}
     182
     183void task1_loop() {
     184    uint8_t buffer[128] = {0};
     185    uint32_t len;
     186    uint32_t i;
     187
     188    if (task1_mux_id == MUX_NULL) {
     189        delay(1);
     190        return;
     191    }
     192   
     193    if (!wifi.isConnected(task1_mux_id)) {
     194        Serial.print("Echo Server Task1 : Port is closed: ");
     195        Serial.println(task1_mux_id);
     196        task1_mux_id = MUX_NULL;
     197        return;
     198    }
     199    if((len = wifi.recv(task1_mux_id, buffer, sizeof(buffer))) == 0) {
     200        return;
     201    }       
     202
     203    /* Recived Data */
     204
     205    for(i = 0; i < len; i++) {
     206        /* If Recive Ctrl-q(17) */
     207        if(buffer[i] == 17) {
     208            Serial.print("Echo Server Task1 : Close port : ");
     209            Serial.println(task1_mux_id);           
     210            wifi.releaseTCP(task1_mux_id);
     211            task1_mux_id = MUX_NULL;
     212            return;
     213        }
     214    }
     215
     216    Serial.print("Echo Server Task1 : Recive Data from mux : ");
     217    Serial.println(task1_mux_id);
     218    Serial.print("Echo Server Task1 : Recive len   : ");
     219    Serial.println(len);
     220    Serial.print("Echo Server Task1 : Recive Data  : ");
     221    Serial.println((char*)buffer);
     222   
     223    if(!wifi.send(task1_mux_id, buffer, len)) {
     224        Serial.println("Echo Server Task1 : send(task1_mux_id, cmd) : Error!");
     225    }
     226    delay(1);   
     227}
     228#endif /* MULTI_ECHO_SERVER */
  • rtos_arduino/trunk/examples/WifiEcho/rca_app.h

    r146 r200  
    22#define _RCA_APP_H_
    33
     4#define MULTI_ECHO_SERVER
     5
     6#ifndef MULTI_ECHO_SERVER
    47#define RCA_NUM_TASK 0
    5 
    6 /*
    7  *  Use Serial3
    8  */
    9 #define RCA_USE_SERIAL3
    10 
    11 #define  RCA_TASK2_LOOP_PRI  4 //Web
    12 #define  RCA_TASK3_LOOP_PRI  3 //LED
    13 #define  RCA_TASK4_LOOP_PRI  7 //TFT
    14 #define  RCA_TASK5_LOOP_PRI  6 //Processing
    15 
    16 #define RCA_ENABLE_PROFILING
    17 #define RCA_PROFILING_CYC_MS  1
     8#else /* MULTI_ECHO_SERVER */
     9#define RCA_NUM_TASK 1
     10#endif /* MULTI_ECHO_SERVER */
    1811
    1912#endif /* _RCA_APP_H_ */
Note: See TracChangeset for help on using the changeset viewer.