John Bailey / XBeeApi

Dependencies:   CircularBuffer FixedLengthList

Dependents:   XBeeApiTest XBeeApiSimpleATCmdsExample XBeeApiBroadcastExample XBeeApiBroadcastExampleRTOS ... more

Committer:
johnb
Date:
Fri Aug 08 11:59:52 2014 +0000
Revision:
56:7fe74b03e6b1
Parent:
53:7b65422d7a32
Add support for setting up encrypted communications; Re-jig XBeeApiCmdAt virtual functions to make inheritance by XBeeDeviceRemoteAt cleaner.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
johnb 38:291aee9eb900 1 /**
johnb 38:291aee9eb900 2 @file
johnb 38:291aee9eb900 3 @brief Class to decode and store received data frames in a circular
johnb 38:291aee9eb900 4 buffer
johnb 38:291aee9eb900 5
johnb 38:291aee9eb900 6 @author John Bailey
johnb 38:291aee9eb900 7
johnb 38:291aee9eb900 8 @copyright Copyright 2014 John Bailey
johnb 38:291aee9eb900 9
johnb 38:291aee9eb900 10 @section LICENSE
johnb 38:291aee9eb900 11
johnb 38:291aee9eb900 12 Licensed under the Apache License, Version 2.0 (the "License");
johnb 38:291aee9eb900 13 you may not use this file except in compliance with the License.
johnb 38:291aee9eb900 14 You may obtain a copy of the License at
johnb 38:291aee9eb900 15
johnb 38:291aee9eb900 16 http://www.apache.org/licenses/LICENSE-2.0
johnb 38:291aee9eb900 17
johnb 38:291aee9eb900 18 Unless required by applicable law or agreed to in writing, software
johnb 38:291aee9eb900 19 distributed under the License is distributed on an "AS IS" BASIS,
johnb 38:291aee9eb900 20 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
johnb 38:291aee9eb900 21 See the License for the specific language governing permissions and
johnb 38:291aee9eb900 22 limitations under the License.
johnb 38:291aee9eb900 23
johnb 38:291aee9eb900 24 */
johnb 38:291aee9eb900 25
johnb 38:291aee9eb900 26 #if !defined XBEEAPIRXFRAMECIRCULARBUFFER_HPP
johnb 38:291aee9eb900 27 #define XBEEAPIRXFRAMECIRCULARBUFFER_HPP
johnb 38:291aee9eb900 28
johnb 38:291aee9eb900 29 #include "XBeeApiRxFrameDecoder.hpp"
johnb 38:291aee9eb900 30 #include "XBeeDevice.hpp"
johnb 38:291aee9eb900 31
johnb 38:291aee9eb900 32 #include <stdint.h>
johnb 38:291aee9eb900 33
johnb 38:291aee9eb900 34 /** Class to deal with decoding of an RX'd data frame
johnb 38:291aee9eb900 35 */
johnb 38:291aee9eb900 36 class XBeeApiRxFrameCircularBuffer : public XBeeApiRxFrameDecoder
johnb 38:291aee9eb900 37 {
johnb 38:291aee9eb900 38 protected:
johnb 53:7b65422d7a32 39 /* TODO: doc */
johnb 38:291aee9eb900 40 size_t m_bufferSize;
johnb 53:7b65422d7a32 41 /* TODO: doc */
johnb 38:291aee9eb900 42 size_t m_head;
johnb 53:7b65422d7a32 43 /* TODO: doc */
johnb 38:291aee9eb900 44 size_t m_tail;
johnb 53:7b65422d7a32 45 /* TODO: doc */
johnb 53:7b65422d7a32 46 size_t m_count;
johnb 53:7b65422d7a32 47 /* TODO: doc */
johnb 53:7b65422d7a32 48 XBeeApiRxFrame* m_framesBuffer;
johnb 53:7b65422d7a32 49
johnb 38:291aee9eb900 50 public:
johnb 53:7b65422d7a32 51 /* TODO: doc */
johnb 38:291aee9eb900 52 /** Constructor */
johnb 38:291aee9eb900 53 XBeeApiRxFrameCircularBuffer( size_t p_bufferSize, XBeeDevice* p_device = NULL );
johnb 38:291aee9eb900 54
johnb 38:291aee9eb900 55 /** Destructor */
johnb 38:291aee9eb900 56 virtual ~XBeeApiRxFrameCircularBuffer( void );
johnb 38:291aee9eb900 57
johnb 38:291aee9eb900 58 /* Callback which is invoked when a frame is successfully decoded
johnb 53:7b65422d7a32 59 \param p_frame The frame content
johnb 38:291aee9eb900 60 */
johnb 47:5d3608835668 61 virtual void frameRxCallback( XBeeApiRxFrame* p_frame );
johnb 38:291aee9eb900 62
johnb 53:7b65422d7a32 63 /* TODO: doc */
johnb 53:7b65422d7a32 64 size_t getFrameCount() const;
johnb 38:291aee9eb900 65
johnb 53:7b65422d7a32 66 /* TODO: doc */
johnb 53:7b65422d7a32 67 void clear();
johnb 38:291aee9eb900 68
johnb 53:7b65422d7a32 69 /* TODO: doc */
johnb 53:7b65422d7a32 70 void pop();
johnb 38:291aee9eb900 71
johnb 53:7b65422d7a32 72 /* TODO: doc */
johnb 53:7b65422d7a32 73 const XBeeApiRxFrame* getTailPtr() const;
johnb 38:291aee9eb900 74 };
johnb 38:291aee9eb900 75
johnb 38:291aee9eb900 76 #endif