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
MsgQueue.cpp
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
Generated on Tue Jul 12 2022 16:20:47 by 1.7.2