Library to easily communicate with XBee modules.

Fork of XBeeLib by Digi International Inc.

Committer:
basvuyk
Date:
Tue Mar 27 14:13:12 2018 +0000
Revision:
10:273032d9299a
Parent:
4:629712865107
Slave V1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
spastor 0:fcaad0dfa051 1 /**
spastor 0:fcaad0dfa051 2 * Copyright (c) 2015 Digi International Inc.,
spastor 0:fcaad0dfa051 3 * All rights not expressly granted are reserved.
spastor 0:fcaad0dfa051 4 *
spastor 0:fcaad0dfa051 5 * This Source Code Form is subject to the terms of the Mozilla Public
spastor 0:fcaad0dfa051 6 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
spastor 0:fcaad0dfa051 7 * You can obtain one at http://mozilla.org/MPL/2.0/.
spastor 0:fcaad0dfa051 8 *
spastor 0:fcaad0dfa051 9 * Digi International Inc. 11001 Bren Road East, Minnetonka, MN 55343
spastor 0:fcaad0dfa051 10 * =======================================================================
spastor 0:fcaad0dfa051 11 */
spastor 0:fcaad0dfa051 12
spastor 0:fcaad0dfa051 13 #if !defined(__AT_CMD_FRAME_H_)
spastor 0:fcaad0dfa051 14 #define __AT_CMD_FRAME_H_
spastor 0:fcaad0dfa051 15
spastor 0:fcaad0dfa051 16 #include "ApiFrame.h"
spastor 0:fcaad0dfa051 17
spastor 0:fcaad0dfa051 18 #define REM_AT_CMD_RESP_FRM_ID_OFFSET 0
spastor 0:fcaad0dfa051 19 #define REM_AT_CMD_RESP_STATUS_OFFSET 13
spastor 0:fcaad0dfa051 20 #define REM_AT_CMD_RESP_CMD_DATA_OFFSET 14
spastor 0:fcaad0dfa051 21 #define REM_AT_CMD_RESP_OVERHEAD 14 /* ID + ADDR64 + ADDR16 + CMD + status */
spastor 0:fcaad0dfa051 22
spastor 0:fcaad0dfa051 23 #define ATCMD_RESP_FRAME_ID_OFFSET 0
spastor 0:fcaad0dfa051 24 #define ATCMD_RESP_CMD_LOW_OFFSET 1
spastor 0:fcaad0dfa051 25 #define ATCMD_RESP_CMD_HIGH_OFFSET 2
spastor 0:fcaad0dfa051 26 #define ATCMD_RESP_STATUS_OFFSET 3
spastor 0:fcaad0dfa051 27 #define ATCMD_RESP_DATA_OFFSET 4
spastor 0:fcaad0dfa051 28 #define ATCMD_RESP_NW_ADDR_H_OFFSET 4
spastor 0:fcaad0dfa051 29 #define ATCMD_RESP_NW_ADDR_L_OFFSET 5
spastor 0:fcaad0dfa051 30 #define ATCMD_RESP_SH_ADDR_L_OFFSET 6
spastor 0:fcaad0dfa051 31 #define ATCMD_RESP_SH_ADDR_H_OFFSET 10
spastor 0:fcaad0dfa051 32 #define ATCMD_RESP_NI_OFFSET 14
spastor 0:fcaad0dfa051 33
spastor 0:fcaad0dfa051 34 #define ATCMD_RESP_OVERHEAD 4 /* ID + CMD + status */
spastor 0:fcaad0dfa051 35
spastor 0:fcaad0dfa051 36 #define ATCMD_802_RESP_SIGN_STR_OFFSET 14
spastor 0:fcaad0dfa051 37 #define ATCMD_802_RESP_NI_OFFSET 15
spastor 0:fcaad0dfa051 38
spastor 0:fcaad0dfa051 39 #define MAX_NI_PARAM_LEN 20
spastor 0:fcaad0dfa051 40
spastor 0:fcaad0dfa051 41 /** Class for the AT command api frames. Derived from ApiFrame */
spastor 4:629712865107 42 class AtCmdFrame : public ApiFrame
spastor 0:fcaad0dfa051 43 {
spastor 0:fcaad0dfa051 44 public:
spastor 0:fcaad0dfa051 45
spastor 0:fcaad0dfa051 46 /**
spastor 4:629712865107 47 * AtCmdResp
spastor 0:fcaad0dfa051 48 */
spastor 0:fcaad0dfa051 49 enum AtCmdResp {
spastor 0:fcaad0dfa051 50 AtCmdRespOk = 0, /**< Ok */
spastor 0:fcaad0dfa051 51 AtCmdRespError = 1, /**< Error */
spastor 0:fcaad0dfa051 52 AtCmdRespInvalidCmd = 2, /**< Invalid Command */
spastor 0:fcaad0dfa051 53 AtCmdRespInvalidParam = 3, /**< Invalid Parameter */
spastor 0:fcaad0dfa051 54 AtCmdRespTxFailure = 4, /**< Tx Failure */
spastor 0:fcaad0dfa051 55 AtCmdRespLenMismatch = 0xfd, /**< Length Mismatch (Error generated by the library) */
spastor 0:fcaad0dfa051 56 AtCmdRespInvalidAddr = 0xfe, /**< Invalid Address (Error generated by the library) */
spastor 0:fcaad0dfa051 57 AtCmdRespTimeout = 0xff, /**< Timeout (Error generated by the library) */
spastor 0:fcaad0dfa051 58 };
spastor 0:fcaad0dfa051 59
spastor 0:fcaad0dfa051 60 /**
spastor 4:629712865107 61 * ModemStatus
spastor 0:fcaad0dfa051 62 */
spastor 0:fcaad0dfa051 63 enum ModemStatus {
spastor 0:fcaad0dfa051 64 HwReset = 0, /**< Hardware reset */
spastor 0:fcaad0dfa051 65 WdReset = 1, /**< Watchdog timer reset */
spastor 0:fcaad0dfa051 66 JoinedNW = 2, /**< Joined network (routers and end devices) */
spastor 0:fcaad0dfa051 67 Disassociated = 3, /**< Disassociated */
spastor 0:fcaad0dfa051 68 SyncLost = 4, /**< Synchronization Lost */
spastor 0:fcaad0dfa051 69 CoordRealign = 5, /**< Coordinator realignment */
spastor 0:fcaad0dfa051 70 CoordStarted = 6, /**< Coordinator started */
spastor 0:fcaad0dfa051 71 NwSecKeyUpdated = 7, /**< Network security key was updated */
spastor 0:fcaad0dfa051 72 NwWokeUp = 0x0B, /**< NwWokeUp */
spastor 0:fcaad0dfa051 73 NwToSleep = 0x0C, /**< NwToSleep */
spastor 0:fcaad0dfa051 74 VccExceeded = 0x0D, /**< VccExceeded: PRO S2B only? */
spastor 0:fcaad0dfa051 75 ModConfChangeJoinInProg = 0x11, /**< Modem configuration changed while join in progress */
spastor 0:fcaad0dfa051 76 };
spastor 0:fcaad0dfa051 77
spastor 0:fcaad0dfa051 78 /** Class constructor
spastor 0:fcaad0dfa051 79 *
spastor 0:fcaad0dfa051 80 * @param cmd at command of the frame
spastor 0:fcaad0dfa051 81 * @param cmd_param command parameter
spastor 0:fcaad0dfa051 82 * @param param_len length of the command param
spastor 0:fcaad0dfa051 83 */
spastor 0:fcaad0dfa051 84 AtCmdFrame(const char * const cmd, const uint32_t cmd_param);
spastor 4:629712865107 85
spastor 4:629712865107 86 /** Class constructor
spastor 0:fcaad0dfa051 87 *
spastor 4:629712865107 88 * @param cmd at command of the frame
spastor 0:fcaad0dfa051 89 * @param cmd_param pointer to command parameter
spastor 0:fcaad0dfa051 90 * @param param_len length of the command param
spastor 0:fcaad0dfa051 91 */
spastor 0:fcaad0dfa051 92 AtCmdFrame(const char * const cmd, const uint8_t * cmd_param = NULL, uint16_t param_len = 0);
spastor 0:fcaad0dfa051 93
spastor 4:629712865107 94 /** Class constructor
spastor 0:fcaad0dfa051 95 *
spastor 0:fcaad0dfa051 96 * @param remote 64 bit address of the remote device where we want to run the command
spastor 4:629712865107 97 * @param cmd at command of the frame
spastor 0:fcaad0dfa051 98 * @param cmd_param command parameter
spastor 0:fcaad0dfa051 99 */
spastor 0:fcaad0dfa051 100 AtCmdFrame(uint64_t remote, const char * const cmd, uint32_t cmd_param);
spastor 4:629712865107 101
spastor 4:629712865107 102 /** Class constructor
spastor 0:fcaad0dfa051 103 *
spastor 0:fcaad0dfa051 104 * @param remote 64 bit address of the remote device where we want to run the command
spastor 4:629712865107 105 * @param cmd at command of the frame
spastor 0:fcaad0dfa051 106 * @param cmd_param pointer to command parameter
spastor 0:fcaad0dfa051 107 * @param param_len length of the command param
spastor 0:fcaad0dfa051 108 */
spastor 0:fcaad0dfa051 109 AtCmdFrame(uint64_t remote, const char * const cmd, const uint8_t * cmd_param = NULL, uint16_t param_len = 0);
spastor 0:fcaad0dfa051 110
spastor 4:629712865107 111 /** Class constructor
spastor 0:fcaad0dfa051 112 *
spastor 0:fcaad0dfa051 113 * @param remote 16 bit address of the remote device where we want to run the command
spastor 4:629712865107 114 * @param cmd at command of the frame
spastor 0:fcaad0dfa051 115 * @param cmd_param command parameter
spastor 0:fcaad0dfa051 116 */
spastor 0:fcaad0dfa051 117 AtCmdFrame(uint16_t remote, const char * const cmd, uint32_t cmd_param);
spastor 4:629712865107 118
spastor 4:629712865107 119 /** Class constructor
spastor 0:fcaad0dfa051 120 *
spastor 0:fcaad0dfa051 121 * @param remote 16 bit address of the remote device where we want to run the command
spastor 4:629712865107 122 * @param cmd at command of the frame
spastor 0:fcaad0dfa051 123 * @param cmd_param pointer to command parameter
spastor 0:fcaad0dfa051 124 * @param param_len length of the command param
spastor 0:fcaad0dfa051 125 */
spastor 0:fcaad0dfa051 126 AtCmdFrame(uint16_t remote, const char * const cmd, const uint8_t * cmd_param = NULL, uint16_t param_len = 0);
spastor 0:fcaad0dfa051 127
spastor 4:629712865107 128 /** Class constructor
spastor 0:fcaad0dfa051 129 *
spastor 0:fcaad0dfa051 130 * @param remote 64 bit address of the remote device where we want to run the command
spastor 0:fcaad0dfa051 131 * @param remote 16 bit address of the remote device where we want to run the command
spastor 4:629712865107 132 * @param cmd at command of the frame
spastor 0:fcaad0dfa051 133 * @param cmd_param command parameter
spastor 0:fcaad0dfa051 134 */
spastor 0:fcaad0dfa051 135 AtCmdFrame(uint64_t remote64, uint16_t remote16, const char * const cmd, uint32_t cmd_param);
spastor 4:629712865107 136
spastor 4:629712865107 137 /** Class constructor
spastor 0:fcaad0dfa051 138 *
spastor 0:fcaad0dfa051 139 * @param remote 64 bit address of the remote device where we want to run the command
spastor 0:fcaad0dfa051 140 * @param remote 16 bit address of the remote device where we want to run the command
spastor 4:629712865107 141 * @param cmd at command of the frame
spastor 0:fcaad0dfa051 142 * @param cmd_param pointer to command parameter
spastor 0:fcaad0dfa051 143 * @param param_len length of the command param
spastor 0:fcaad0dfa051 144 */
spastor 0:fcaad0dfa051 145 AtCmdFrame(uint64_t remote64, uint16_t remote16, const char * const cmd, const uint8_t * cmd_param = NULL, uint16_t param_len = 0);
spastor 0:fcaad0dfa051 146
spastor 0:fcaad0dfa051 147 protected:
spastor 4:629712865107 148 /** build_at_cmd_frame method used by the constructors to create the at command frame
spastor 0:fcaad0dfa051 149 *
spastor 4:629712865107 150 * @param cmd at command of the frame
spastor 0:fcaad0dfa051 151 * @param cmd_params pointer to command parameter
spastor 0:fcaad0dfa051 152 * @param param_len length of the command param
spastor 0:fcaad0dfa051 153 */
spastor 0:fcaad0dfa051 154 void build_at_cmd_frame(const char *cmd, const uint8_t *cmd_params, uint8_t payload_len, bool reverse = true);
spastor 0:fcaad0dfa051 155
spastor 4:629712865107 156 /** build_at_cmd_remote_frame method used by the constructors to create the at command frame
spastor 0:fcaad0dfa051 157 *
spastor 0:fcaad0dfa051 158 * @param remote64 64 bit address of the remote device where we want to run the command
spastor 0:fcaad0dfa051 159 * @param remote16 16 bit address of the remote device where we want to run the command
spastor 4:629712865107 160 * @param cmd at command of the frame
spastor 0:fcaad0dfa051 161 * @param cmd_params pointer to command parameter
spastor 0:fcaad0dfa051 162 * @param param_len length of the command param
spastor 0:fcaad0dfa051 163 */
spastor 0:fcaad0dfa051 164 void build_at_cmd_remote_frame(uint64_t remote64, uint16_t remote16,
spastor 0:fcaad0dfa051 165 const char *const cmd, const uint8_t *const cmd_params, uint8_t payload_len, bool reverse = true);
spastor 0:fcaad0dfa051 166 };
spastor 0:fcaad0dfa051 167
spastor 0:fcaad0dfa051 168 #endif /* __AT_CMD_FRAME_H_ */