- Timestamp:
- Mar 28, 2016, 2:28:23 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
rtos_arduino/trunk/arduino_lib/libraries/Milkcocoa_Arduino_SDK/Milkcocoa.cpp
r144 r180 35 35 DataElement::DataElement(char *json_string) { 36 36 paJsonObj = aJson.parse(json_string); 37 params = aJson.getObjectItem(paJsonObj, "params"); 37 params = aJson.getObjectItem(paJsonObj, "params"); 38 38 } 39 39 … … 56 56 } 57 57 58 char *DataElement::getString(const char *key) {58 bool DataElement::getString(const char *key, char **pdata) { 59 59 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 65 bool 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 72 bool DataElement::getFloat(const char *key, float *pdata) { 64 73 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 } 75 78 76 79 char *DataElement::toCharArray() { … … 106 109 } 107 110 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 */ 119 int8_t Milkcocoa::connect(int32_t tmout) { 120 int8_t ret; 121 int32_t retry = 0; 110 122 111 123 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... "); 116 128 117 129 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 142 int8_t Milkcocoa::push(const char *path, DataElement *pdataelement, uint16_t timeout) { 128 143 char topic[100]; 129 boolret;144 int8_t ret; 130 145 char *send_array; 146 147 if((ret = connect(timeout)) != 0){return ret;} 148 131 149 sprintf(topic, "%s/%s/push", app_id, path); 132 150 Adafruit_MQTT_Publish pushPublisher = Adafruit_MQTT_Publish(mqtt, topic); 133 151 send_array = pdataelement->toCharArray(); 134 ret = pushPublisher.publish(send_array);152 ret = (pushPublisher.publish(send_array))? 0 : MILKCOCOA_PUSH_ERRORNO; 135 153 free(send_array); 136 154 return ret; 137 155 } 138 156 139 bool Milkcocoa::send(const char *path, DataElement *pdataelement) {157 int8_t Milkcocoa::send(const char *path, DataElement *pdataelement, uint16_t timeout) { 140 158 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 143 164 sprintf(topic, "%s/%s/send", app_id, path); 144 165 Adafruit_MQTT_Publish pushPublisher = Adafruit_MQTT_Publish(mqtt, topic); 145 166 send_array = pdataelement->toCharArray(); 146 ret = pushPublisher.publish(send_array);167 ret = (pushPublisher.publish(send_array))? 0 : MILKCOCOA_PUSH_ERRORNO; 147 168 free(send_array); 148 169 return ret; 149 170 } 150 171 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 */ 178 int8_t Milkcocoa::loop(uint16_t timeout) { 179 int8_t ret; 180 181 if((ret = connect(timeout)) != 0){return ret;} 182 153 183 Adafruit_MQTT_Subscribe *subscription; 154 184 while ((subscription = mqtt->readSubscription(1000))) { … … 161 191 } 162 192 } 193 194 return 0; 163 195 } 164 196
Note:
See TracChangeset
for help on using the changeset viewer.