asymcute.h¶
Asymcute MQTT-SN interface definition.
-
ASYMCUTE_BUFSIZE¶ Default buffer size used for receive and request buffers.
1
(128U)
-
ASYMCUTE_HANDLER_PRIO¶ Default priority for Asymcute’s handler thread.
1
(THREAD_PRIORITY_MAIN - 2)
-
ASYMCUTE_HANDLER_STACKSIZE¶ Default stack size for Asymcute’s handler thread.
1
(THREAD_STACKSIZE_DEFAULT)
-
ASYMCUTE_LISTENER_PRIO¶ Default priority for an Asymcute listener thread.
1
(THREAD_PRIORITY_MAIN - 3)
Note
Must be of higher priority than
asymcute.h::ASYMCUTE_HANDLER_PRIO
-
ASYMCUTE_LISTENER_STACKSIZE¶ Default stack size for an Asymcute listener thread.
1
(THREAD_STACKSIZE_DEFAULT)
-
ASYMCUTE_ID_MAXLEN¶ Maximum client ID length.
1
(32U)
Note
Must be less than (256 - 8) and less than (ASYMCUTE_BUFSIZE - 8)
-
ASYMCUTE_TOPIC_MAXLEN¶ Maximum topic length.
1
(32U)
Note
Must be less than (256 - 8) AND less than (ASYMCUTE_BUFSIZE - 8).
-
ASYMCUTE_KEEPALIVE¶ Keep alive interval [in s] communicated to the gateway.
1
(360) /* -> 6 min*/
For the default value, see spec v1.2, section 7.2 -> T_WAIT: > 5 min
-
ASYMCUTE_KEEPALIVE_PING¶ Interval to use for sending periodic ping messages.
1
((ASYMCUTE_KEEPALIVE / 4) * 3)
The default behavior of this implementation is to send ping messages as soon as three quarters of the keep alive interval have passed.
Note
Must be less than ASYMCUTE_KEEPALIVE
-
ASYMCUTE_T_RETRY¶ Resend interval [in seconds].
1
(10U) /* -> 10 sec */
For the default value, see spec v1.2, section 7.2 -> T_RETRY: 10 to 15 sec
-
ASYMCUTE_N_RETRY¶ Number of retransmissions until requests time out.
1
(3U)
For the default value, see spec v1.2, section 7.2 -> N_RETRY: 3-5
-
enum
@180¶ - ASYMCUTE_OK
= 0 - all is good
- ASYMCUTE_OVERFLOW
= -1 - error: insufficient buffer space
- ASYMCUTE_GWERR
= -2 - error: bad gateway connection state
- ASYMCUTE_NOTSUP
= -3 - error: feature not supported
- ASYMCUTE_BUSY
= -4 - error: context already in use
- ASYMCUTE_REGERR
= -5 - error: registration invalid
- ASYMCUTE_SUBERR
= -6 - error: subscription invalid
- ASYMCUTE_OK
-
enum
@181¶ - ASYMCUTE_TIMEOUT
- request timed out
- ASYMCUTE_CANCELED
- request was canceled
- ASYMCUTE_REJECTED
- request was rejected
- ASYMCUTE_CONNECTED
- connected to gateway
- ASYMCUTE_DISCONNECTED
- connection got disconnected
- ASYMCUTE_REGISTERED
- topic was registered
- ASYMCUTE_PUBLISHED
- data was published
- ASYMCUTE_SUBSCRIBED
- client was subscribed to topic
- ASYMCUTE_UNSUBSCRIBED
- client was unsubscribed from topic
-
struct asymcute_con
asymcute_con_t¶ Forward type declaration for connections contexts.
-
struct asymcute_req
asymcute_req_t¶ Forward type declaration for request contexts.
-
struct asymcute_sub
asymcute_sub_t¶ Forward type declaration for subscription contexts.
-
struct asymcute_topic
asymcute_topic_t¶ Forward type declaration for topic definitions.
-
struct asymcute_will
asymcute_will_t¶ Forward type declaration for last will definitions.
-
void(*
asymcute_evt_cb_t()¶ Event callback used for communicating connection and request related events to the user.
Parameters
req: pointer to the request context that triggered the event, may be NULL of unsolicited events evt_type: type of the event
-
void(*
asymcute_sub_cb_t()¶ Callback triggered on events for active subscriptions.
Parameters
sub: pointer to subscription context triggering this event evt_type: type of the event data: incoming data for PUBLISHED events, may be NULL len: length of datain bytesarg: user supplied argument
-
unsigned(*
asymcute_to_cb_t()¶ Context specific timeout callback, only used internally.
-
bool
asymcute_req_in_use(constasymcute.h::asymcute_req_t* req)¶ Check if a given request context is currently used.
Parameters
req: request context to check Return values
- true if context is currently used
- false if context is not used
-
bool
asymcute_sub_active(constasymcute.h::asymcute_sub_t* sub)¶ Check if a given subscription is currently active.
Parameters
sub: subscription context to check Return values
- true if subscription is active
- false if subscription is not active
-
void
asymcute_topic_reset(asymcute.h::asymcute_topic_t* topic)¶ Reset the given topic.
Parameters
topic: topic to reset
-
bool
asymcute_topic_is_reg(constasymcute.h::asymcute_topic_t* topic)¶ Check if a given topic is currently registered with a gateway.
Parameters
topic: topic to check Return values
- true if topic is registered
- false if topic is not registered
-
bool
asymcute_topic_is_init(constasymcute.h::asymcute_topic_t* topic)¶ Check if a given topic is initialized.
Parameters
topic: topic to check Return values
- true if topic is initialized
- false if topic is not initialized
-
bool
asymcute_topic_equal(constasymcute.h::asymcute_topic_t* a, constasymcute.h::asymcute_topic_t* b)¶ Compare two given topics and check if they are equal.
Parameters
a: topic A b: topic B Return values
- true if both topics are equal
- false if topics differ
-
int
asymcute_topic_init(asymcute.h::asymcute_topic_t* topic, const char * topic_name, uint16_t topic_id)¶ Initialize the given topic.
Parameters
topic: topic to initialize topic_name: topic name (ASCII), may be NULL if topic should use a pre-defined topic ID topic_id: pre-defined topic ID, or don’t care if topic_nameis givenReturn values
- ASYMCUTE_OK on success
- ASYMCUTE_REGERR if topic is already registered
- ASYMCUTE_OVERFLOW if topic name does not fit into buffer or if pre- defined topic ID is invalid
-
int
asymcute_listener_run(asymcute.h::asymcute_con_t* con, char * stack,msp430_types.h::size_tstacksize, char priority,asymcute.h::asymcute_evt_cb_tcallback)¶ Start a listener thread.
Note
Must have higher priority then the handler thread (defined by
asymcute.h::ASYMCUTE_HANDLER_PRIO)Parameters
con: connection context to use for this connection stack: stack used to run the listener thread stacksize: size of stackin bytespriority: priority of the listener thread created by this function callback: user callback for notification about connection related events Return values
- ASYMCUTE_OK on success
- ASYMCUTE_BUSY if connection context is already in use
-
void
asymcute_handler_run(void)¶ Start the global Asymcute handler thread for processing timeouts and keep alive events.
This function is typically called during system initialization.
-
bool
asymcute_is_connected(constasymcute.h::asymcute_con_t* con)¶ Check if the given connection context is connected to a gateway.
Parameters
con: connection to check Return values
- true if context is connected
- false if not connected
-
int
asymcute_connect(asymcute.h::asymcute_con_t* con,asymcute.h::asymcute_req_t* req,sock/udp.h::sock_udp_ep_t* server, const char * cli_id, bool clean,asymcute.h::asymcute_will_t* will)¶ Connect to the given MQTT-SN gateway.
Parameters
con: connection to use req: request context to use for CONNECT procedure server: UDP endpoint of the target gateway cli_id: client ID to register with the gateway clean: set trueto start a clean sessionwill: last will (currently not implemented) Return values
- ASYMCUTE_OK if CONNECT message has been sent
- ASYMCUTE_NOTSUP if last will was given (temporary until implemented)
- ASYMCUTE_OVERFLOW if
cli_idis larger than ASYMCUTE_ID_MAXLEN - ASYMCUTE_GWERR if the connection is not in idle state
- ASYMCUTE_BUSY if the given request context is already in use
-
int
asymcute_disconnect(asymcute.h::asymcute_con_t* con,asymcute.h::asymcute_req_t* req)¶ Close the given connection.
Parameters
con: connection to close req: request context to use for DISCONNECT procedure Return values
- ASYMCUTE_OK if DISCONNECT message has been sent
- ASYMCUTE_GWERR if connection context is not connected
- ASYMCUTE_BUSY if the given request context is already in use
-
int
asymcute_register(asymcute.h::asymcute_con_t* con,asymcute.h::asymcute_req_t* req,asymcute.h::asymcute_topic_t* topic)¶ Register a given topic with the connected gateway.
Parameters
con: connection to use req: request context to use for REGISTER procedure topic: topic to register Return values
- ASYMCUTE_OK if REGISTER message has been sent
- ASYMCUTE_REGERR if topic is already registered
- ASYMCUTE_GWERR if not connected to a gateway
- ASYMCUTE_BUSY if the given request context is already in use
-
int
asymcute_publish(asymcute.h::asymcute_con_t* con,asymcute.h::asymcute_req_t* req, constasymcute.h::asymcute_topic_t* topic, const void * data,msp430_types.h::size_tdata_len, uint8_t flags)¶ Publish the given data to the given topic.
Parameters
con: connection to use req: request context used for PUBLISH procedure topic: publish data to this topic data: actual payload to send data_len: size of datain bytesflags: additional flags (QoS level, DUP, and RETAIN) Return values
- ASYMCUTE_OK if PUBLISH message has been sent
- ASYMCUTE_NOTSUP if unsupported flags have been set
- ASYMCUTE_OVERFLOW if data does not fit into transmit buffer
- ASYMCUTE_REGERR if given topic is not registered
- ASYMCUTE_GWERR if not connected to a gateway
- ASYMCUTE_BUSY if the given request context is already in use
-
int
asymcute_subscribe(asymcute.h::asymcute_con_t* con,asymcute.h::asymcute_req_t* req,asymcute.h::asymcute_sub_t* sub,asymcute.h::asymcute_topic_t* topic,asymcute.h::asymcute_sub_cb_tcallback, void * arg, uint8_t flags)¶ Subscribe to a given topic.
Parameters
con: connection to use req: request context used for SUBSCRIBE procedure sub: subscription context to store subscription state topic: topic to subscribe to, must be initialized (see asymcute.h::asymcute_topic_init())callback: user callback triggered on events for this subscription arg: user supplied argument passed to the event callback flags: additional flags (QoS level and DUP) Return values
- ASYMCUTE_OK if SUBSCRIBE message has been sent
- ASYMCUTE_NOTSUP if invalid or unsupported flags have been set
- ASYMCUTE_REGERR if topic is not initialized
- ASYMCUTE_GWERR if not connected to a gateway
- ASYMCUTE_SUBERR if already subscribed to the given topic
- ASYMCUTE_BUSY if the given request context is already in use
-
int
asymcute_unsubscribe(asymcute.h::asymcute_con_t* con,asymcute.h::asymcute_req_t* req,asymcute.h::asymcute_sub_t* sub)¶ Cancel an active subscription.
Parameters
con: connection to use req: request context used for UNSUBSCRIBE procedure sub: subscription to cancel Return values
- ASYMCUTE_OK if UNSUBSCRIBE message has been sent
- ASYMCUTE_SUBERR if subscription is not currently active
- ASYMCUTE_GWERR if not connected to a gateway
- ASYMCUTE_BUSY if the given request context is already in use
-
struct
asymcute_req¶ Asymcute request context.
-
struct asymcute_req *
next¶ the requests list entry
-
asymcute.h::asymcute_con_t*con¶ connection the request is using
-
asymcute.h::asymcute_to_cb_tcb¶ internally used callback
-
void *
arg¶ internally used additional state
-
event_callback_t
to_evt¶ timeout event
-
event_timeout_t
to_timer¶ timeout timer
-
uint8_t
data()¶ buffer holding the request’s data
-
msp430_types.h::size_tdata_len¶ length of the request packet in byte
-
uint16_t
msg_id¶ used message id for this request
-
uint8_t
retry_cnt¶ retransmission counter
-
struct asymcute_req *
-
struct
asymcute_con¶ Asymcute connection context.
-
sock/udp.h::sock_udp_tsock¶ socket used by a connections
-
sock/udp.h::sock_udp_ep_tserver_ep¶ the gateway’s UDP endpoint
-
asymcute.h::asymcute_req_t*pending¶ list holding pending requests
-
asymcute.h::asymcute_sub_t*subscriptions¶ list holding active subscriptions
-
asymcute.h::asymcute_evt_cb_tuser_cb¶ event callback provided by user
-
event_callback_t
keepalive_evt¶ keep alive event
-
event_timeout_t
keepalive_timer¶ keep alive timer
-
uint16_t
last_id¶ last used message ID for this connection
-
uint8_t
keepalive_retry_cnt¶ keep alive transmission counter
-
uint8_t
state¶ connection state
-
uint8_t
rxbuf()¶ connection specific receive buf
-
char
cli_id()¶ buffer to store client ID
-
-
struct
asymcute_topic¶ Data-structure for holding topics and their registration status.
-
asymcute.h::asymcute_con_t*con¶ connection used for registration
-
char
name()¶ topic string (ACSII only)
-
uint8_t
flags¶ normal, short, or pre-defined
-
uint16_t
id¶ topic id
-
-
struct
asymcute_sub¶ Data-structure holding the state of subscriptions.
-
asymcute.h::asymcute_sub_t*next¶ the subscriptions list entry
-
asymcute.h::asymcute_topic_t*topic¶ topic we subscribe to
-
asymcute.h::asymcute_sub_cb_tcb¶ called on incoming data
-
void *
arg¶ user supplied callback argument
-