FreeRTOS: BLE
BLE
Return to main page ↑
iot_ble_mqtt_serialize.h
Go to the documentation of this file.
1 /*
2  * FreeRTOS BLE V2.1.0
3  * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a copy of
6  * this software and associated documentation files (the "Software"), to deal in
7  * the Software without restriction, including without limitation the rights to
8  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9  * the Software, and to permit persons to whom the Software is furnished to do so,
10  * subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice shall be included in all
13  * copies or substantial portions of the Software.
14  *
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21  *
22  * http://aws.amazon.com/freertos
23  * http://www.FreeRTOS.org
24  */
25 
32 #ifndef IOT_BLE_MQTT_SERIALIZE_H
33 #define IOT_BLE_MQTT_SERIALIZE_H
34 
35 #include "types/iot_mqtt_types.h"
36 #include "aws_clientcredential.h"
37 
43 #define IOT_BLE_MQTT_MSG_TYPE "w"
44 #define IOT_BLE_MQTT_CLIENT_ID "d"
45 #define IOT_BLE_MQTT_BROKER_EP "a"
46 #define IOT_BLE_MQTT_CLEAN_SESSION "c"
47 #define IOT_BLE_MQTT_TOPIC "u"
48 #define IOT_BLE_MQTT_TOPIC_LIST "v"
49 #define IOT_BLE_MQTT_QOS "n"
50 #define IOT_BLE_MQTT_QOS_LIST "o"
51 #define IOT_BLE_MQTT_MESSAGE_ID "i"
52 #define IOT_BLE_MQTT_PAYLOAD "k"
53 #define IOT_BLE_MQTT_STATUS "s"
54 
61 #define IOT_BLE_MQTT_MSG_TYPE_CONNECT ( 1 )
62 #define IOT_BLE_MQTT_MSG_TYPE_CONNACK ( 2 )
63 #define IOT_BLE_MQTT_MSG_TYPE_PUBLISH ( 3 )
64 #define IOT_BLE_MQTT_MSG_TYPE_PUBACK ( 4 )
65 #define IOT_BLE_MQTT_MSG_TYPE_PUBREC ( 5 )
66 #define IOT_BLE_MQTT_MSG_TYPE_PUBREL ( 6 )
67 #define IOT_BLE_MQTT_MSG_TYPE_PUBCOMP ( 7 )
68 #define IOT_BLE_MQTT_MSG_TYPE_SUBSCRIBE ( 8 )
69 #define IOT_BLE_MQTT_MSG_TYPE_SUBACK ( 9 )
70 #define IOT_BLE_MQTT_MSG_TYPE_UNSUBSCRIBE ( 10 )
71 #define IOT_BLE_MQTT_MSG_TYPE_UNSUBACK ( 11 )
72 #define IOT_BLE_MQTT_MSG_TYPE_PINGREQ ( 12 )
73 #define IOT_BLE_MQTT_MSG_TYPE_PINGRESP ( 13 )
74 #define IOT_BLE_MQTT_MSG_TYPE_DISCONNECT ( 14 )
75 
82 typedef enum
83 {
99 
100 
105 
118 IotMqttError_t IotBleMqtt_SerializeConnect( const IotMqttConnectInfo_t * const pConnectInfo,
119  uint8_t ** const pConnectPacket,
120  size_t * const pPacketSize );
121 
134 IotMqttError_t IotBleMqtt_DeserializeConnack( struct _mqttPacket * pConnack );
135 
136 
137 
151 IotMqttError_t IotBleMqtt_SerializePublish( const IotMqttPublishInfo_t * const pPublishInfo,
152  uint8_t ** const pPublishPacket,
153  size_t * const pPacketSize,
154  uint16_t * const pPacketIdentifier,
155  uint8_t ** pPacketIdentifierHigh );
156 
165 void IotBleMqtt_PublishSetDup( uint8_t * const pPublishPacket,
166  uint8_t * pPacketIdentifierHigh,
167  uint16_t * const pNewPacketIdentifier );
168 
169 
184 IotMqttError_t IotBleMqtt_DeserializePublish( struct _mqttPacket * pConnack );
185 
186 
199 IotMqttError_t IotBleMqtt_SerializePuback( uint16_t packetIdentifier,
200  uint8_t ** const pPubackPacket,
201  size_t * const pPacketSize );
202 
216 IotMqttError_t IotBleMqtt_DeserializePuback( struct _mqttPacket * pConnack );
217 
232 IotMqttError_t IotBleMqtt_SerializeSubscribe( const IotMqttSubscription_t * const pSubscriptionList,
233  size_t subscriptionCount,
234  uint8_t ** const pSubscribePacket,
235  size_t * const pPacketSize,
236  uint16_t * const pPacketIdentifier );
237 
253 IotMqttError_t IotBleMqtt_DeserializeSuback( struct _mqttPacket * pConnack );
254 
269 IotMqttError_t IotBleMqtt_SerializeUnsubscribe( const IotMqttSubscription_t * const pSubscriptionList,
270  size_t subscriptionCount,
271  uint8_t ** const pUnsubscribePacket,
272  size_t * const pPacketSize,
273  uint16_t * const pPacketIdentifier );
274 
275 
289 IotMqttError_t IotBleMqtt_DeserializeUnsuback( struct _mqttPacket * pConnack );
290 
302 IotMqttError_t IotBleMqtt_SerializeDisconnect( uint8_t ** const pDisconnectPacket,
303  size_t * const pPacketSize );
304 
315 IotMqttError_t IotBleMqtt_SerializePingreq( uint8_t ** const pPingreqPacket,
316  size_t * const pPacketSize );
317 
329 IotMqttError_t IotBleMqtt_DeserializePingresp( struct _mqttPacket * pConnack );
330 
340 uint8_t IotBleMqtt_GetPacketType( void * pNetworkConnection,
341  const IotNetworkInterface_t * pNetworkInterface );
342 
352 size_t IotBleMqtt_GetRemainingLength( void * pNetworkConnection,
353  const IotNetworkInterface_t * pNetworkInterface );
354 
360 void IotBleMqtt_FreePacket( uint8_t * pPacket );
361 
362 #endif /* IOT_MQTT_SERIALIZE_BLE_H */
IOT_BLE_MQTT_STATUS_CONNECTION_ERROR
@ IOT_BLE_MQTT_STATUS_CONNECTION_ERROR
Definition: iot_ble_mqtt_serialize.h:89
IotBleMqtt_CleanupSerialize
void IotBleMqtt_CleanupSerialize(void)
Cleanup the serializerfor Mqtt messages over BLE.
IotBleMqtt_DeserializeUnsuback
IotMqttError_t IotBleMqtt_DeserializeUnsuback(struct _mqttPacket *pConnack)
Deserialize MQTT UNSUBACK message received over BLE connection.
IotBleMqtt_InitSerialize
bool IotBleMqtt_InitSerialize(void)
Initializes the serializer for MQTT messages over BLE.
IotBleMqtt_SerializeDisconnect
IotMqttError_t IotBleMqtt_SerializeDisconnect(uint8_t **const pDisconnectPacket, size_t *const pPacketSize)
Serialize MQTT DISCONNECT message sent over BLE connection.
IotBleMqtt_SerializeSubscribe
IotMqttError_t IotBleMqtt_SerializeSubscribe(const IotMqttSubscription_t *const pSubscriptionList, size_t subscriptionCount, uint8_t **const pSubscribePacket, size_t *const pPacketSize, uint16_t *const pPacketIdentifier)
Serialize MQTT SUBSCRIBE message sent over BLE connection.
IOT_BLE_MQTT_STATUS_UNKNOWN
@ IOT_BLE_MQTT_STATUS_UNKNOWN
Definition: iot_ble_mqtt_serialize.h:84
IotBleMqtt_GetRemainingLength
size_t IotBleMqtt_GetRemainingLength(void *pNetworkConnection, const IotNetworkInterface_t *pNetworkInterface)
Gets the payload length for the MQTT message.
IOT_BLE_MQTT_STATUS_DISCONNECTED
@ IOT_BLE_MQTT_STATUS_DISCONNECTED
Definition: iot_ble_mqtt_serialize.h:87
IotBleMqtt_SerializeUnsubscribe
IotMqttError_t IotBleMqtt_SerializeUnsubscribe(const IotMqttSubscription_t *const pSubscriptionList, size_t subscriptionCount, uint8_t **const pUnsubscribePacket, size_t *const pPacketSize, uint16_t *const pPacketIdentifier)
Serialize MQTT UNSUBSCRIBE message sent over BLE connection.
IotBleMqtt_DeserializeSuback
IotMqttError_t IotBleMqtt_DeserializeSuback(struct _mqttPacket *pConnack)
Deserialize MQTT SUBACK message received over BLE connection.
IotBleMqtt_GetPacketType
uint8_t IotBleMqtt_GetPacketType(void *pNetworkConnection, const IotNetworkInterface_t *pNetworkInterface)
Gets the packet type for the MQTT message.
MQTTBLEConnectStatus_t
MQTTBLEConnectStatus_t
Definition: iot_ble_mqtt_serialize.h:83
IotNetworkInterface_t
IOT_BLE_MQTT_STATUS_CONNECTED
@ IOT_BLE_MQTT_STATUS_CONNECTED
Definition: iot_ble_mqtt_serialize.h:86
IotBleMqtt_SerializePuback
IotMqttError_t IotBleMqtt_SerializePuback(uint16_t packetIdentifier, uint8_t **const pPubackPacket, size_t *const pPacketSize)
Serialize MQTT PUBACK message sent over BLE connection.
IotBleMqtt_SerializePublish
IotMqttError_t IotBleMqtt_SerializePublish(const IotMqttPublishInfo_t *const pPublishInfo, uint8_t **const pPublishPacket, size_t *const pPacketSize, uint16_t *const pPacketIdentifier, uint8_t **pPacketIdentifierHigh)
Serialize MQTT PUBLISH message sent over BLE connection.
IotBleMqtt_PublishSetDup
void IotBleMqtt_PublishSetDup(uint8_t *const pPublishPacket, uint8_t *pPacketIdentifierHigh, uint16_t *const pNewPacketIdentifier)
Set the DUP flag to indicate its a duplicate QoS1/QoS2 message.
IOT_BLE_MQTT_STATUS_CONNECTION_REFUSED
@ IOT_BLE_MQTT_STATUS_CONNECTION_REFUSED
Definition: iot_ble_mqtt_serialize.h:88
IotBleMqtt_SerializeConnect
IotMqttError_t IotBleMqtt_SerializeConnect(const IotMqttConnectInfo_t *const pConnectInfo, uint8_t **const pConnectPacket, size_t *const pPacketSize)
Serialize the MQTT CONNECT message sent over BLE connection.
IotBleMqtt_DeserializeConnack
IotMqttError_t IotBleMqtt_DeserializeConnack(struct _mqttPacket *pConnack)
Deserialize MQTT CONNACK message received over BLE connection.
IOT_BLE_MQTT_STATUS_CONNECTING
@ IOT_BLE_MQTT_STATUS_CONNECTING
Definition: iot_ble_mqtt_serialize.h:85
IotBleMqtt_DeserializePublish
IotMqttError_t IotBleMqtt_DeserializePublish(struct _mqttPacket *pConnack)
Deserialize MQTT PUBLISH message received over BLE connection.
IotBleMqtt_DeserializePuback
IotMqttError_t IotBleMqtt_DeserializePuback(struct _mqttPacket *pConnack)
Deserialize MQTT PUBACK message received from a BLE connection.
IotBleMqtt_DeserializePingresp
IotMqttError_t IotBleMqtt_DeserializePingresp(struct _mqttPacket *pConnack)
Deserializes MQTT PINGRESP received over BLE connection.
IotBleMqtt_SerializePingreq
IotMqttError_t IotBleMqtt_SerializePingreq(uint8_t **const pPingreqPacket, size_t *const pPacketSize)
Serializes MQTT PING request message sent over BLE connection.
IOT_BLE_MQTT_STATUS_PROTOCOL_ERROR
@ IOT_BLE_MQTT_STATUS_PROTOCOL_ERROR
Definition: iot_ble_mqtt_serialize.h:90
IotBleMqtt_FreePacket
void IotBleMqtt_FreePacket(uint8_t *pPacket)
Frees an MQTT message.