Ignore:
Timestamp:
Mar 28, 2016, 2:28:23 PM (8 years ago)
Author:
ertl-honda
Message:

ESP8266のライブラリの更新に伴う変更

File:
1 edited

Legend:

Unmodified
Added
Removed
  • rtos_arduino/trunk/arduino_lib/libraries/Milkcocoa_Arduino_SDK/Milkcocoa.cpp

    r144 r180  
    3535DataElement::DataElement(char *json_string) {
    3636  paJsonObj = aJson.parse(json_string);
    37   params = aJson.getObjectItem(paJsonObj, "params");   
     37  params = aJson.getObjectItem(paJsonObj, "params");
    3838}
    3939
     
    5656}
    5757
    58 char *DataElement::getString(const char *key) {
     58bool DataElement::getString(const char *key, char **pdata) {
    5959  aJsonObject* obj = aJson.getObjectItem(params, key);
    60   return obj->valuestring;
    61 }
    62 
    63 int DataElement::getInt(const char *key) {
     60  if((obj == NULL) || (obj->type != aJson_String)) {return false;}
     61  *pdata = obj->valuestring;   
     62  return true;
     63}
     64
     65bool DataElement::getInt(const char *key, int *pdata) {
     66  aJsonObject* obj = aJson.getObjectItem(params, key);   
     67  if((obj == NULL) || (obj->type != aJson_Int)) {return false;}
     68  *pdata = obj->valueint;
     69  return true;
     70}
     71
     72bool DataElement::getFloat(const char *key, float *pdata) {
    6473  aJsonObject* obj = aJson.getObjectItem(params, key);
    65   if(obj == NULL)
    66     Serial.println("obj is NULL");
    67   return obj->valueint;
    68 }
    69 
    70 float DataElement::getFloat(const char *key) {
    71   aJsonObject* obj = aJson.getObjectItem(params, key);
    72   return obj->valuefloat;
    73 }
    74 
     74  if((obj == NULL) || (obj->type != aJson_Float)) {return false;}
     75  *pdata = obj->valuefloat;
     76  return true;
     77}
    7578
    7679char *DataElement::toCharArray() {
     
    106109}
    107110
    108 void Milkcocoa::connect() {
    109   int ret;
     111/*
     112 *  tmout
     113 *   1-   : Connect try time.
     114 *   0    : retry Forever
     115 *  Return code
     116 *   0     : Success
     117 *   other : Error code (see Adafruit_MQTT::connectErrorString())
     118 */
     119int8_t Milkcocoa::connect(int32_t tmout) {
     120  int8_t ret;
     121  int32_t retry = 0;
    110122
    111123  if (mqtt->connected()) {
    112     return;
    113   }
    114 
    115   Serial.print("Connecting to MQTT... ");
     124    return 0;
     125  }
     126
     127  MILKCOCOA_DEBUG_PRINTLN("Connecting to MQTT... ");
    116128
    117129  while ((ret = mqtt->connect()) != 0) { // connect will return 0 for connected
    118        Serial.println(mqtt->connectErrorString(ret));
    119        Serial.println(ret);
    120        Serial.println("Retrying MQTT connection in 5 seconds...");
    121        mqtt->disconnect();
    122        delay(5000);  // wait 5 seconds
    123   }
    124   Serial.println("MQTT Connected!");
    125 }
    126 
    127 bool Milkcocoa::push(const char *path, DataElement *pdataelement) {
     130      mqtt->disconnect();
     131      // Timeout
     132      if ((tmout !=  0) && (++retry == tmout)) {
     133          return ret;
     134      }
     135      delay(MILKCOCOA_CONNECT_DELAY_MS);
     136  }
     137  MILKCOCOA_DEBUG_PRINTLN("MQTT Connected!");
     138
     139  return 0; 
     140}
     141
     142int8_t Milkcocoa::push(const char *path, DataElement *pdataelement, uint16_t timeout) {
    128143  char topic[100];
    129   bool ret;
     144  int8_t ret;
    130145  char *send_array;
     146
     147  if((ret = connect(timeout)) != 0){return ret;}
     148   
    131149  sprintf(topic, "%s/%s/push", app_id, path);
    132150  Adafruit_MQTT_Publish pushPublisher = Adafruit_MQTT_Publish(mqtt, topic);
    133151  send_array = pdataelement->toCharArray();
    134   ret = pushPublisher.publish(send_array);
     152  ret = (pushPublisher.publish(send_array))? 0 : MILKCOCOA_PUSH_ERRORNO;
    135153  free(send_array);
    136154  return ret;
    137155}
    138156
    139 bool Milkcocoa::send(const char *path, DataElement *pdataelement) {
     157int8_t Milkcocoa::send(const char *path, DataElement *pdataelement, uint16_t timeout) {
    140158  char topic[100];
    141   bool ret;
    142   char *send_array;   
     159  int8_t ret;
     160  char *send_array;
     161
     162  if((ret = connect(timeout)) != 0){return ret;}
     163   
    143164  sprintf(topic, "%s/%s/send", app_id, path);
    144165  Adafruit_MQTT_Publish pushPublisher = Adafruit_MQTT_Publish(mqtt, topic);
    145166  send_array = pdataelement->toCharArray();
    146   ret = pushPublisher.publish(send_array);
     167  ret = (pushPublisher.publish(send_array))? 0 : MILKCOCOA_PUSH_ERRORNO;
    147168  free(send_array);   
    148169  return ret;
    149170}
    150171
    151 void Milkcocoa::loop() {
    152   connect();
     172/*
     173 *  Return code
     174 *   0     : Success
     175 *   other : Error code
     176 *           -1,1-6 : see Adafruit_MQTT::connectErrorString()
     177 */
     178int8_t Milkcocoa::loop(uint16_t timeout) {
     179  int8_t ret;
     180
     181  if((ret = connect(timeout)) != 0){return ret;}
     182   
    153183  Adafruit_MQTT_Subscribe *subscription;
    154184  while ((subscription = mqtt->readSubscription(1000))) {
     
    161191    }
    162192  }
     193
     194  return 0; 
    163195}
    164196
Note: See TracChangeset for help on using the changeset viewer.