this is a sample for mbed(LPC1768)
serialization_lib/sitewhere.c@0:3163adfd2cf1, 2015-11-19 (annotated)
- Committer:
- 1
- Date:
- Thu Nov 19 10:17:55 2015 +0800
- Revision:
- 0:3163adfd2cf1
????????????????????????
1.callback
2.thread
3.auto-connect,time-up
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
1 | 0:3163adfd2cf1 | 1 | #include "sitewhere.h" |
1 | 0:3163adfd2cf1 | 2 | #include "double_conversion.h" |
1 | 0:3163adfd2cf1 | 3 | |
1 | 0:3163adfd2cf1 | 4 | // Signals end of stream. |
1 | 0:3163adfd2cf1 | 5 | uint8_t zero = 0; |
1 | 0:3163adfd2cf1 | 6 | |
1 | 0:3163adfd2cf1 | 7 | unsigned int sw_register(char* hardwareId, char* specificationToken, uint8_t* buffer, size_t length, char* originator) { |
1 | 0:3163adfd2cf1 | 8 | pb_ostream_t stream = pb_ostream_from_buffer(buffer, length); |
1 | 0:3163adfd2cf1 | 9 | |
1 | 0:3163adfd2cf1 | 10 | SiteWhere_Header header = { }; |
1 | 0:3163adfd2cf1 | 11 | header.command = SiteWhere_Command_REGISTER; |
1 | 0:3163adfd2cf1 | 12 | if (originator != NULL) { |
1 | 0:3163adfd2cf1 | 13 | header.has_originator = true; |
1 | 0:3163adfd2cf1 | 14 | strcpy(header.originator, originator); |
1 | 0:3163adfd2cf1 | 15 | } |
1 | 0:3163adfd2cf1 | 16 | if (!pb_encode_delimited(&stream, SiteWhere_Header_fields, &header)) { |
1 | 0:3163adfd2cf1 | 17 | return 0; |
1 | 0:3163adfd2cf1 | 18 | } |
1 | 0:3163adfd2cf1 | 19 | |
1 | 0:3163adfd2cf1 | 20 | SiteWhere_RegisterDevice registerDevice = { }; |
1 | 0:3163adfd2cf1 | 21 | strcpy(registerDevice.hardwareId, hardwareId); |
1 | 0:3163adfd2cf1 | 22 | strcpy(registerDevice.specificationToken, specificationToken); |
1 | 0:3163adfd2cf1 | 23 | if (!pb_encode_delimited(&stream, SiteWhere_RegisterDevice_fields, ®isterDevice)) { |
1 | 0:3163adfd2cf1 | 24 | return 0; |
1 | 0:3163adfd2cf1 | 25 | } |
1 | 0:3163adfd2cf1 | 26 | |
1 | 0:3163adfd2cf1 | 27 | return stream.bytes_written; |
1 | 0:3163adfd2cf1 | 28 | } |
1 | 0:3163adfd2cf1 | 29 | |
1 | 0:3163adfd2cf1 | 30 | unsigned int sw_acknowledge(char* hardwareId, char* message, uint8_t* buffer, size_t length, char* originator) { |
1 | 0:3163adfd2cf1 | 31 | pb_ostream_t stream = pb_ostream_from_buffer(buffer, length); |
1 | 0:3163adfd2cf1 | 32 | |
1 | 0:3163adfd2cf1 | 33 | SiteWhere_Header header = { }; |
1 | 0:3163adfd2cf1 | 34 | header.command = SiteWhere_Command_ACKNOWLEDGE; |
1 | 0:3163adfd2cf1 | 35 | if (originator != NULL) { |
1 | 0:3163adfd2cf1 | 36 | header.has_originator = true; |
1 | 0:3163adfd2cf1 | 37 | strcpy(header.originator, originator); |
1 | 0:3163adfd2cf1 | 38 | } |
1 | 0:3163adfd2cf1 | 39 | if (!pb_encode_delimited(&stream, SiteWhere_Header_fields, &header)) { |
1 | 0:3163adfd2cf1 | 40 | return 0; |
1 | 0:3163adfd2cf1 | 41 | } |
1 | 0:3163adfd2cf1 | 42 | |
1 | 0:3163adfd2cf1 | 43 | SiteWhere_Acknowledge ack = { }; |
1 | 0:3163adfd2cf1 | 44 | strcpy(ack.hardwareId, hardwareId); |
1 | 0:3163adfd2cf1 | 45 | if (message != NULL) { |
1 | 0:3163adfd2cf1 | 46 | ack.has_message = true; |
1 | 0:3163adfd2cf1 | 47 | strcpy(ack.message, message); |
1 | 0:3163adfd2cf1 | 48 | } |
1 | 0:3163adfd2cf1 | 49 | if (!pb_encode_delimited(&stream, SiteWhere_Acknowledge_fields, &ack)) { |
1 | 0:3163adfd2cf1 | 50 | return 0; |
1 | 0:3163adfd2cf1 | 51 | } |
1 | 0:3163adfd2cf1 | 52 | |
1 | 0:3163adfd2cf1 | 53 | return stream.bytes_written; |
1 | 0:3163adfd2cf1 | 54 | } |
1 | 0:3163adfd2cf1 | 55 | |
1 | 0:3163adfd2cf1 | 56 | unsigned int sw_measurement(char* hardwareId, char* name, float value, int64_t eventDate, |
1 | 0:3163adfd2cf1 | 57 | uint8_t* buffer, size_t length, char* originator) { |
1 | 0:3163adfd2cf1 | 58 | pb_ostream_t stream = pb_ostream_from_buffer(buffer, length); |
1 | 0:3163adfd2cf1 | 59 | |
1 | 0:3163adfd2cf1 | 60 | SiteWhere_Header header = { }; |
1 | 0:3163adfd2cf1 | 61 | header.command = SiteWhere_Command_DEVICEMEASUREMENT; |
1 | 0:3163adfd2cf1 | 62 | if (originator != NULL) { |
1 | 0:3163adfd2cf1 | 63 | header.has_originator = true; |
1 | 0:3163adfd2cf1 | 64 | strcpy(header.originator, originator); |
1 | 0:3163adfd2cf1 | 65 | } |
1 | 0:3163adfd2cf1 | 66 | if (!pb_encode_delimited(&stream, SiteWhere_Header_fields, &header)) { |
1 | 0:3163adfd2cf1 | 67 | return 0; |
1 | 0:3163adfd2cf1 | 68 | } |
1 | 0:3163adfd2cf1 | 69 | |
1 | 0:3163adfd2cf1 | 70 | SiteWhere_DeviceMeasurements measurements = { }; |
1 | 0:3163adfd2cf1 | 71 | strcpy(measurements.hardwareId, hardwareId); |
1 | 0:3163adfd2cf1 | 72 | |
1 | 0:3163adfd2cf1 | 73 | SiteWhere_Measurement measurement = { }; |
1 | 0:3163adfd2cf1 | 74 | strcpy(measurement.measurementId, name); |
1 | 0:3163adfd2cf1 | 75 | measurement.measurementValue = float_to_double(value); //there is a problem |
1 | 0:3163adfd2cf1 | 76 | //measurement.measurementValue = value; |
1 | 0:3163adfd2cf1 | 77 | |
1 | 0:3163adfd2cf1 | 78 | measurements.measurement[0] = measurement; |
1 | 0:3163adfd2cf1 | 79 | measurements.measurement_count = 1; |
1 | 0:3163adfd2cf1 | 80 | |
1 | 0:3163adfd2cf1 | 81 | if (eventDate != NULL) { |
1 | 0:3163adfd2cf1 | 82 | measurements.has_eventDate = true; |
1 | 0:3163adfd2cf1 | 83 | measurements.eventDate = eventDate; |
1 | 0:3163adfd2cf1 | 84 | } |
1 | 0:3163adfd2cf1 | 85 | if (!pb_encode_delimited(&stream, SiteWhere_DeviceMeasurements_fields, &measurements)) { |
1 | 0:3163adfd2cf1 | 86 | return 0; |
1 | 0:3163adfd2cf1 | 87 | } |
1 | 0:3163adfd2cf1 | 88 | |
1 | 0:3163adfd2cf1 | 89 | return stream.bytes_written; |
1 | 0:3163adfd2cf1 | 90 | } |
1 | 0:3163adfd2cf1 | 91 | |
1 | 0:3163adfd2cf1 | 92 | unsigned int sw_location(char* hardwareId, float lat, float lon, float ele, int64_t eventDate, |
1 | 0:3163adfd2cf1 | 93 | uint8_t* buffer, size_t length, char* originator) { |
1 | 0:3163adfd2cf1 | 94 | pb_ostream_t stream = pb_ostream_from_buffer(buffer, length); |
1 | 0:3163adfd2cf1 | 95 | |
1 | 0:3163adfd2cf1 | 96 | SiteWhere_Header header = { }; |
1 | 0:3163adfd2cf1 | 97 | header.command = SiteWhere_Command_DEVICELOCATION; |
1 | 0:3163adfd2cf1 | 98 | if (originator != NULL) { |
1 | 0:3163adfd2cf1 | 99 | header.has_originator = true; |
1 | 0:3163adfd2cf1 | 100 | strcpy(header.originator, originator); |
1 | 0:3163adfd2cf1 | 101 | } |
1 | 0:3163adfd2cf1 | 102 | if (!pb_encode_delimited(&stream, SiteWhere_Header_fields, &header)) { |
1 | 0:3163adfd2cf1 | 103 | return 0; |
1 | 0:3163adfd2cf1 | 104 | } |
1 | 0:3163adfd2cf1 | 105 | |
1 | 0:3163adfd2cf1 | 106 | SiteWhere_DeviceLocation location = { }; |
1 | 0:3163adfd2cf1 | 107 | strcpy(location.hardwareId, hardwareId); |
1 | 0:3163adfd2cf1 | 108 | |
1 | 0:3163adfd2cf1 | 109 | location.latitude = float_to_double(lat); //there is a problem |
1 | 0:3163adfd2cf1 | 110 | location.longitude = float_to_double(lon); |
1 | 0:3163adfd2cf1 | 111 | location.elevation = float_to_double(ele); |
1 | 0:3163adfd2cf1 | 112 | //location.latitude = lat; |
1 | 0:3163adfd2cf1 | 113 | //location.longitude = lon; |
1 | 0:3163adfd2cf1 | 114 | //location.elevation = ele; |
1 | 0:3163adfd2cf1 | 115 | |
1 | 0:3163adfd2cf1 | 116 | location.has_elevation = true; |
1 | 0:3163adfd2cf1 | 117 | |
1 | 0:3163adfd2cf1 | 118 | if (eventDate != NULL) { |
1 | 0:3163adfd2cf1 | 119 | location.has_eventDate = true; |
1 | 0:3163adfd2cf1 | 120 | location.eventDate = eventDate; |
1 | 0:3163adfd2cf1 | 121 | } |
1 | 0:3163adfd2cf1 | 122 | if (!pb_encode_delimited(&stream, SiteWhere_DeviceLocation_fields, &location)) { |
1 | 0:3163adfd2cf1 | 123 | return 0; |
1 | 0:3163adfd2cf1 | 124 | } |
1 | 0:3163adfd2cf1 | 125 | |
1 | 0:3163adfd2cf1 | 126 | return stream.bytes_written; |
1 | 0:3163adfd2cf1 | 127 | } |
1 | 0:3163adfd2cf1 | 128 | |
1 | 0:3163adfd2cf1 | 129 | unsigned int sw_alert(char* hardwareId, char* alertType, char* alertMessage, int64_t eventDate, |
1 | 0:3163adfd2cf1 | 130 | uint8_t* buffer, size_t length, char* originator) { |
1 | 0:3163adfd2cf1 | 131 | pb_ostream_t stream = pb_ostream_from_buffer(buffer, length); |
1 | 0:3163adfd2cf1 | 132 | |
1 | 0:3163adfd2cf1 | 133 | SiteWhere_Header header = { }; |
1 | 0:3163adfd2cf1 | 134 | header.command = SiteWhere_Command_DEVICEALERT; |
1 | 0:3163adfd2cf1 | 135 | if (originator != NULL) { |
1 | 0:3163adfd2cf1 | 136 | header.has_originator = true; |
1 | 0:3163adfd2cf1 | 137 | strcpy(header.originator, originator); |
1 | 0:3163adfd2cf1 | 138 | } |
1 | 0:3163adfd2cf1 | 139 | if (!pb_encode_delimited(&stream, SiteWhere_Header_fields, &header)) { |
1 | 0:3163adfd2cf1 | 140 | return 0; |
1 | 0:3163adfd2cf1 | 141 | } |
1 | 0:3163adfd2cf1 | 142 | |
1 | 0:3163adfd2cf1 | 143 | SiteWhere_DeviceAlert alert = { }; |
1 | 0:3163adfd2cf1 | 144 | strcpy(alert.hardwareId, hardwareId); |
1 | 0:3163adfd2cf1 | 145 | strcpy(alert.alertType, alertType); |
1 | 0:3163adfd2cf1 | 146 | strcpy(alert.alertMessage, alertMessage); |
1 | 0:3163adfd2cf1 | 147 | if (eventDate != NULL) { |
1 | 0:3163adfd2cf1 | 148 | alert.has_eventDate = true; |
1 | 0:3163adfd2cf1 | 149 | alert.eventDate = eventDate; |
1 | 0:3163adfd2cf1 | 150 | } |
1 | 0:3163adfd2cf1 | 151 | if (!pb_encode_delimited(&stream, SiteWhere_DeviceAlert_fields, &alert)) { |
1 | 0:3163adfd2cf1 | 152 | return 0; |
1 | 0:3163adfd2cf1 | 153 | } |
1 | 0:3163adfd2cf1 | 154 | |
1 | 0:3163adfd2cf1 | 155 | return stream.bytes_written; |
1 | 0:3163adfd2cf1 | 156 | } |