Xbee s2b for lpc11u24

Dependencies:   DigiLogger

Dependents:  

Fork of XBeeLib by Digi International Inc.

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers FH_IoDataSampleDM.cpp Source File

FH_IoDataSampleDM.cpp

00001 /**
00002  * Copyright (c) 2015 Digi International Inc.,
00003  * All rights not expressly granted are reserved.
00004  *
00005  * This Source Code Form is subject to the terms of the Mozilla Public
00006  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
00007  * You can obtain one at http://mozilla.org/MPL/2.0/.
00008  *
00009  * Digi International Inc. 11001 Bren Road East, Minnetonka, MN 55343
00010  * =======================================================================
00011  */
00012 
00013 #include "XBeeLib.h"
00014 
00015 using namespace XBeeLib;
00016 
00017 /** Class constructor */
00018 FH_IoDataSampeDM::FH_IoDataSampeDM() : FrameHandler(ApiFrame::IoSampleRxZBDM),
00019     io_data_cb(NULL)
00020 {
00021 }
00022 
00023 /** Class destructor */
00024 FH_IoDataSampeDM::~FH_IoDataSampeDM()
00025 {
00026 }
00027 
00028 void FH_IoDataSampeDM::register_io_data_cb(io_data_cb_dm_t function)
00029 {
00030     io_data_cb = function;
00031 }
00032 
00033 void FH_IoDataSampeDM::unregister_io_data_cb()
00034 {
00035     io_data_cb = NULL;
00036 }
00037 
00038 /* DM RX packet offsets */
00039 #define DM_IO_SAMPLE_DATA_OFFSET            11
00040 
00041 void FH_IoDataSampeDM::process_frame_data(const ApiFrame *const frame)
00042 {
00043     const uint8_t * const datap = frame->get_data();;
00044 
00045     /* The caller checks that the type matches, so no need to check it here again */
00046     if (io_data_cb == NULL) {
00047         return;
00048     }
00049 
00050     /* We got an IO packet, decode it... */
00051     const uint64_t sender64 = addr64_from_uint8_t(datap);
00052     const RemoteXBeeDM sender = RemoteXBeeDM(sender64);
00053     const IOSampleDM ioSample = IOSampleDM(&datap[DM_IO_SAMPLE_DATA_OFFSET], frame->get_data_len() - DM_IO_SAMPLE_DATA_OFFSET);
00054 
00055     io_data_cb(sender, ioSample);
00056 }