Library to easily communicate with XBee modules.

Fork of XBeeLib by Digi International Inc.

FrameHandlers/FH_RxPacketDM.h

Committer:
basvuyk
Date:
2018-03-27
Revision:
10:273032d9299a
Parent:
6:06522f3a6642

File content as of revision 10:273032d9299a:

/**
 * 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(__FH_RX_PACKET_DM_H_)
#define __FH_RX_PACKET_DM_H_

#include "FrameHandler.h"
#include "RemoteXBee/RemoteXBee.h"

namespace XBeeLib {

/**
 * @defgroup callback_types "Callback types declaration"
 * @{
 */
/** receive callback type declaration
  * @param remote the remote module that sent the data
  * @param broadcast a boolean to tell if the message was broadcast (true) or unicast (false)
  * @param data a pointer to data sent by @b remote.
  * @param len length (in bytes) of @b data buffer
  */
typedef void (*receive_dm_cb_t)(const RemoteXBeeDM& remote, bool broadcast, const uint8_t *const data, uint16_t len);
/**
 * @}
 */

class FH_RxPacketDM : public FrameHandler
{
    private:
        /** Callback function, invoked if registered */
        receive_dm_cb_t receive_cb;

    public:
        /** Class constructor */
        FH_RxPacketDM();

        /** Class destructor */
        virtual ~FH_RxPacketDM();

        /** Method called by the stack to process the modem status frame data

            \param frame pointer pointing to api frame that must be processed */
        virtual void process_frame_data(const ApiFrame* const frame);

        void register_receive_cb(receive_dm_cb_t function);

        void unregister_receive_cb();
};

}   /* namespace XBeeLib */

#endif /* __FH_RX_PACKET_DM_H_ */