Fork of my MQTTGateway
Diff: XbeeMonitor/XBeeLib/Frames/AtCmdFrame.h
- Revision:
- 0:f1d3878b8dd9
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/XbeeMonitor/XBeeLib/Frames/AtCmdFrame.h Sat Apr 08 14:45:51 2017 +0000
@@ -0,0 +1,168 @@
+/**
+ * Copyright (c) 2015 Digi International Inc.,
+ * All rights not expressly granted are reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * Digi International Inc. 11001 Bren Road East, Minnetonka, MN 55343
+ * =======================================================================
+ */
+
+#if !defined(__AT_CMD_FRAME_H_)
+#define __AT_CMD_FRAME_H_
+
+#include "ApiFrame.h"
+
+#define REM_AT_CMD_RESP_FRM_ID_OFFSET 0
+#define REM_AT_CMD_RESP_STATUS_OFFSET 13
+#define REM_AT_CMD_RESP_CMD_DATA_OFFSET 14
+#define REM_AT_CMD_RESP_OVERHEAD 14 /* ID + ADDR64 + ADDR16 + CMD + status */
+
+#define ATCMD_RESP_FRAME_ID_OFFSET 0
+#define ATCMD_RESP_CMD_LOW_OFFSET 1
+#define ATCMD_RESP_CMD_HIGH_OFFSET 2
+#define ATCMD_RESP_STATUS_OFFSET 3
+#define ATCMD_RESP_DATA_OFFSET 4
+#define ATCMD_RESP_NW_ADDR_H_OFFSET 4
+#define ATCMD_RESP_NW_ADDR_L_OFFSET 5
+#define ATCMD_RESP_SH_ADDR_L_OFFSET 6
+#define ATCMD_RESP_SH_ADDR_H_OFFSET 10
+#define ATCMD_RESP_NI_OFFSET 14
+
+#define ATCMD_RESP_OVERHEAD 4 /* ID + CMD + status */
+
+#define ATCMD_802_RESP_SIGN_STR_OFFSET 14
+#define ATCMD_802_RESP_NI_OFFSET 15
+
+#define MAX_NI_PARAM_LEN 20
+
+/** Class for the AT command api frames. Derived from ApiFrame */
+class AtCmdFrame : public ApiFrame
+{
+ public:
+
+ /**
+ * AtCmdResp
+ */
+ enum AtCmdResp {
+ AtCmdRespOk = 0, /**< Ok */
+ AtCmdRespError = 1, /**< Error */
+ AtCmdRespInvalidCmd = 2, /**< Invalid Command */
+ AtCmdRespInvalidParam = 3, /**< Invalid Parameter */
+ AtCmdRespTxFailure = 4, /**< Tx Failure */
+ AtCmdRespLenMismatch = 0xfd, /**< Length Mismatch (Error generated by the library) */
+ AtCmdRespInvalidAddr = 0xfe, /**< Invalid Address (Error generated by the library) */
+ AtCmdRespTimeout = 0xff, /**< Timeout (Error generated by the library) */
+ };
+
+ /**
+ * ModemStatus
+ */
+ enum ModemStatus {
+ HwReset = 0, /**< Hardware reset */
+ WdReset = 1, /**< Watchdog timer reset */
+ JoinedNW = 2, /**< Joined network (routers and end devices) */
+ Disassociated = 3, /**< Disassociated */
+ SyncLost = 4, /**< Synchronization Lost */
+ CoordRealign = 5, /**< Coordinator realignment */
+ CoordStarted = 6, /**< Coordinator started */
+ NwSecKeyUpdated = 7, /**< Network security key was updated */
+ NwWokeUp = 0x0B, /**< NwWokeUp */
+ NwToSleep = 0x0C, /**< NwToSleep */
+ VccExceeded = 0x0D, /**< VccExceeded: PRO S2B only? */
+ ModConfChangeJoinInProg = 0x11, /**< Modem configuration changed while join in progress */
+ };
+
+ /** Class constructor
+ *
+ * @param cmd at command of the frame
+ * @param cmd_param command parameter
+ * @param param_len length of the command param
+ */
+ AtCmdFrame(const char * const cmd, const uint32_t cmd_param);
+
+ /** Class constructor
+ *
+ * @param cmd at command of the frame
+ * @param cmd_param pointer to command parameter
+ * @param param_len length of the command param
+ */
+ AtCmdFrame(const char * const cmd, const uint8_t * cmd_param = NULL, uint16_t param_len = 0);
+
+ /** Class constructor
+ *
+ * @param remote 64 bit address of the remote device where we want to run the command
+ * @param cmd at command of the frame
+ * @param cmd_param command parameter
+ */
+ AtCmdFrame(uint64_t remote, const char * const cmd, uint32_t cmd_param);
+
+ /** Class constructor
+ *
+ * @param remote 64 bit address of the remote device where we want to run the command
+ * @param cmd at command of the frame
+ * @param cmd_param pointer to command parameter
+ * @param param_len length of the command param
+ */
+ AtCmdFrame(uint64_t remote, const char * const cmd, const uint8_t * cmd_param = NULL, uint16_t param_len = 0);
+
+ /** Class constructor
+ *
+ * @param remote 16 bit address of the remote device where we want to run the command
+ * @param cmd at command of the frame
+ * @param cmd_param command parameter
+ */
+ AtCmdFrame(uint16_t remote, const char * const cmd, uint32_t cmd_param);
+
+ /** Class constructor
+ *
+ * @param remote 16 bit address of the remote device where we want to run the command
+ * @param cmd at command of the frame
+ * @param cmd_param pointer to command parameter
+ * @param param_len length of the command param
+ */
+ AtCmdFrame(uint16_t remote, const char * const cmd, const uint8_t * cmd_param = NULL, uint16_t param_len = 0);
+
+ /** Class constructor
+ *
+ * @param remote 64 bit address of the remote device where we want to run the command
+ * @param remote 16 bit address of the remote device where we want to run the command
+ * @param cmd at command of the frame
+ * @param cmd_param command parameter
+ */
+ AtCmdFrame(uint64_t remote64, uint16_t remote16, const char * const cmd, uint32_t cmd_param);
+
+ /** Class constructor
+ *
+ * @param remote 64 bit address of the remote device where we want to run the command
+ * @param remote 16 bit address of the remote device where we want to run the command
+ * @param cmd at command of the frame
+ * @param cmd_param pointer to command parameter
+ * @param param_len length of the command param
+ */
+ AtCmdFrame(uint64_t remote64, uint16_t remote16, const char * const cmd, const uint8_t * cmd_param = NULL, uint16_t param_len = 0);
+
+ protected:
+ /** build_at_cmd_frame method used by the constructors to create the at command frame
+ *
+ * @param cmd at command of the frame
+ * @param cmd_params pointer to command parameter
+ * @param param_len length of the command param
+ */
+ void build_at_cmd_frame(const char *cmd, const uint8_t *cmd_params, uint8_t payload_len, bool reverse = true);
+
+ /** build_at_cmd_remote_frame method used by the constructors to create the at command frame
+ *
+ * @param remote64 64 bit address of the remote device where we want to run the command
+ * @param remote16 16 bit address of the remote device where we want to run the command
+ * @param cmd at command of the frame
+ * @param cmd_params pointer to command parameter
+ * @param param_len length of the command param
+ */
+ void build_at_cmd_remote_frame(uint64_t remote64, uint16_t remote16,
+ const char *const cmd, const uint8_t *const cmd_params, uint8_t payload_len, bool reverse = true);
+};
+
+#endif /* __AT_CMD_FRAME_H_ */