John Bailey / XBeeApi

Dependencies:   CircularBuffer FixedLengthList

Dependents:   XBeeApiTest XBeeApiSimpleATCmdsExample XBeeApiBroadcastExample XBeeApiBroadcastExampleRTOS ... more

Committer:
johnb
Date:
Sun Jul 06 21:55:28 2014 +0000
Revision:
46:a1abbc66f157
Parent:
45:dde04adb8791
Parent:
38:291aee9eb900
Child:
47:5d3608835668
Merge back in branch which was accidentally created.

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 38:291aee9eb900 39 size_t m_bufferSize;
johnb 38:291aee9eb900 40 size_t m_head;
johnb 38:291aee9eb900 41 size_t m_tail;
johnb 38:291aee9eb900 42 size_t m_count;
johnb 38:291aee9eb900 43 XBeeApiRxFrame* m_framesBuffer;
johnb 38:291aee9eb900 44 public:
johnb 38:291aee9eb900 45 /** Constructor */
johnb 38:291aee9eb900 46 XBeeApiRxFrameCircularBuffer( size_t p_bufferSize, XBeeDevice* p_device = NULL );
johnb 38:291aee9eb900 47
johnb 38:291aee9eb900 48 /** Destructor */
johnb 38:291aee9eb900 49 virtual ~XBeeApiRxFrameCircularBuffer( void );
johnb 38:291aee9eb900 50
johnb 38:291aee9eb900 51 /* Callback which is invoked when a frame is successfully decoded
johnb 38:291aee9eb900 52 \param p_frame The frame content
johnb 38:291aee9eb900 53 */
johnb 45:dde04adb8791 54 virtual void frameRxCallback( XBeeApiRxFrame* const p_frame );
johnb 38:291aee9eb900 55
johnb 38:291aee9eb900 56 size_t getFrameCount() const;
johnb 38:291aee9eb900 57
johnb 38:291aee9eb900 58 void clear();
johnb 38:291aee9eb900 59
johnb 38:291aee9eb900 60 void pop();
johnb 38:291aee9eb900 61
johnb 38:291aee9eb900 62 const XBeeApiRxFrame* getTailPtr() const;
johnb 38:291aee9eb900 63 };
johnb 38:291aee9eb900 64
johnb 38:291aee9eb900 65 #endif