Bluetooth Low Energy based Firmware Over The Air with Mbed. Mbed part is a external processor of the IoT devices and communicate with a Bluetooth module. The Bluetooth module have to support BLE and implement BLE FOTA profile designed by ours. BLE FOTA profile specification is available from our GIT hub wiki(https://github.com/sevencore/BLEFOTA).

Dependencies:   mbed

Fork of mbed_fota by KIM HyoengJun

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers MsgQueue.cpp Source File

MsgQueue.cpp

Go to the documentation of this file.
00001 /**
00002  * @file MsgQueue.cpp
00003  * @brief Ble message queue 
00004  * Copyright 2015 SEVENCORE Co., Ltd.
00005  *
00006  * @author HyeongJun Kim 
00007  * @version 1.0.0  
00008  * @date 2015-08-19
00009 */
00010 #include "MsgQueue.h"
00011 #include "mbed.h"
00012 /**
00013  ****************************************************************************************
00014  * @addtogroup ext_fota module
00015  * @brief Ble message Queue Class Method Definition.
00016  *
00017  * @{
00018  ****************************************************************************************
00019  */
00020 namespace sevencore_fota{
00021 /**
00022  ****************************************************************************************
00023  * @brief Ble Message Queue Constructor.
00024  * @param[in] Message Queue Size.
00025  * @detail Default size is 512
00026  ****************************************************************************************
00027  */    
00028 MsgQueue::MsgQueue(int MaxSize):MaxNum(MaxSize)
00029 {
00030     Front = NULL;
00031     Rear = NULL;
00032     ElemCnt = 0;
00033 }
00034 /**
00035  ****************************************************************************************
00036  * @brief Ble Message Queue Destructor.
00037  ****************************************************************************************
00038  */
00039 MsgQueue::~MsgQueue(void)
00040 {
00041 }
00042 /**
00043  ****************************************************************************************
00044  * @brief Add message in queue.
00045  * @param[in] Ble message void pointer.
00046  ****************************************************************************************
00047  */
00048 void MsgQueue::EnQueue(void *vData)
00049 {
00050     Element *tmp = new Element;
00051     tmp->Data = vData;
00052     tmp->Next = NULL;
00053     ElemCnt++;
00054     if( Front == NULL)
00055     {
00056         Front = tmp;
00057         Rear = tmp;
00058     }else
00059     {
00060         Rear->Next = tmp;
00061         Rear = tmp;
00062     }    
00063 }
00064 /**
00065  ****************************************************************************************
00066  * @brief Remove message in queue.
00067  * @return void pointer(*void)
00068  ****************************************************************************************
00069  */
00070 void *MsgQueue::DeQueue(void)
00071 {
00072     void *tmp;
00073     Element *tmpElem;
00074     
00075     if(Front == NULL)
00076         return NULL;
00077     
00078     ElemCnt--;
00079     tmpElem = Front;
00080     Front = tmpElem->Next;
00081     tmp = tmpElem->Data;
00082     free(tmpElem);
00083     
00084     return tmp;
00085 }   
00086 /**
00087  ****************************************************************************************
00088  * @brief Return queue element count.
00089  * @return Integer element count.
00090  ****************************************************************************************
00091  */
00092 int MsgQueue::GetElementCount(void)
00093 {
00094     return ElemCnt;
00095 }
00096 /**
00097  ****************************************************************************************
00098  * @brief Boolean that queue is empty.
00099  * @return Boolean.
00100  ****************************************************************************************
00101  */
00102 bool MsgQueue::IsEmpty(void)
00103 {
00104     if( Front == NULL)
00105         return false;
00106     else
00107         return true;
00108 }
00109 
00110 }//namespace
00111 /// @} ext_fota module