CC2541讀取電池電量並且廣播出去
CC2541之電池電量查詢並廣播
一、簡介
以SimpleBLEPeripheral工程為例, 介紹如何讀取電量並且廣播。
二、實驗平臺協議棧版本:
BLE-CC254x-1.4.0
編譯軟體: IAR 8.20.2
硬體平臺: CC2541 + USB-RS232 USB dongle
手機平臺:
蘋果4s
APP:
LightBlue
三、實現步驟
1.保證專案中有hal_adc.c和hal_adc.h
2.新增Profile如下圖所示
我的檔案路徑在:C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\Profiles\Batt
(如果找不到建議下載一個“光速搜尋”,這個軟體用起來很好用)
3.新增兩檔案的路徑(因為我的改了名字,你們的不必和我的一致,和你們的名字相同就行了)
4.開啟ADC取樣的巨集
5.新增標頭檔案(
simpleBLEPeripheral.c)
#include "battservice.h"
6.修改程式碼給電源電量預留的位置( simpleBLEPeripheral.c)static uint8 advertData[] =
{
0x07,
GAP_ADTYPE_MANUFACTURER_SPECIFIC, // manufacturer specific advertisement data type
0x20, //給MAC地址預留位置 2
0x20,
0x20,
0x20,
0x20,
0x20, // 7
0x01,
GAP_ADTYPE_MANUFACTURER_SPECIFIC, // manufacturer specific advertisement data type
0x20,//給電池電量預留的位置 10
7.新增相應的變數 (simpleBLEPeripheral.c)
8、新增相應的程式碼(simpleBLEPeripheral.c)
//讀取電池電量
Batt_GetParameter(BATT_PARAM_LEVEL,battLevel);
osal_memcpy (advertData + 10, battLevel,1);
//更新廣播資料
GAP_UpdateAdvertisingData(simpleBLEPeripheral_TaskID,TRUE,sizeof(advertData),advertData );
讀取電池電量這裡需要注意我在simpleBLEPeripheral.c中呼叫battservice.c中呼叫下面這個函式
不能用,我也添加了相應的宣告在“.h”檔案中 並且把static去掉了還是不能再其他的.c檔案中呼叫。只能在
battservice.c中呼叫(這個希望大神們指導)
在下面這個函式中呼叫battMeasure函式讀取相應的電池電量。(battservice.c)
bStatus_t Batt_GetParameter( uint8 param, void *value )
{
bStatus_t ret = SUCCESS;
switch ( param )
{
case BATT_PARAM_LEVEL:
//wodejiqing
battLevel = battMeasure();
*((uint8*)value) = battLevel;
break;
9、在 simpleBLEperipheral.h中新增一個新的事件
10、在 simpleBLEperipheral.c中下面位置啟動這個事件
11.新增相應的處理函式(我的是廣播30秒後不再廣播)
//週期性廣播處理事件
if ( events & SBP_ADV_PERIODIC_PROCESS_EVT )
{
static uint8 k = 0;
osal_memcpy (advertData + 2, ownAddress,6);
osal_memcpy (advertData + 10, battLevel,1);
// GAPRole_SetParameter( GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData );
GAP_UpdateAdvertisingData(simpleBLEPeripheral_TaskID,TRUE,sizeof(advertData),advertData ); //更新廣播資料
k += 2;
if(k <= 30 )
{
osal_start_timerEx( simpleBLEPeripheral_TaskID, SBP_ADV_PERIODIC_PROCESS_EVT, adv_per_time );
}else{
uint8 initial_advertising_enable = FALSE;
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable );
}
return (events ^ SBP_ADV_PERIODIC_PROCESS_EVT);
}
然後就可以了
下面是執行結果因為用的是usb供電所以電量一直未100、我也用過電子供電,結果很理想。
我是一個無線通訊愛好者
希望這篇部落格可以幫到更多的人
注:
本人新手,寫部落格想記錄成長曆程還有請大神們指正不足之處,還有許多不足的地方,希望各位大神不吝賜教。謝謝
相關推薦
在U-BOOT中實現讀取電池電量
platform: s3c2440 + u-boot 1.1.4 + linux 2.6.18 為了防止低電開機啟動到一半的時候系統down掉,所以有必要在 u-boot 中加入電池電量的偵測。 偵測電池電量只需讀 AN0 口上的 AD 值就可以了,當電量少於 5
【BLE】CC2541之電池電量服務
本篇博文最後修改時間:2017年01月06日,11:06。 一、簡介 本文以SimpleBLEPeripheral工程為例,介紹如何新增一個電池電量服務。 二、實驗平臺 協議棧版本:BLE-CC254x-1.4.0 編譯軟體: IAR 8.20.2 硬體平臺: Smar
adb命令檢測apk啟動時間、內存、CPU使用情況、流量、電池電量等——常用的adb命令
serial 信息 proc idg 情況 電量 pid art str ADB:Android Debug Bridge,是Android SDK裏一個可以直接操作安卓模擬器或真實設備的工具,頗為強大。 檢測APP: adb shell am start
【API】Windows 獲取電池電量信息
api 註意 電池 time life per 信息 獲取 word typedef struct _SYSTEM_POWER_STATUS { BYTE ACLineStatus; BYTE BatteryFlag; BYTE BatteryLifePerc
MTK Android O 充電狀態下電池電量100%時不顯示閃電圖示
需求: android 8.1.1版本google原生充電的時候都會顯示一個閃電的形狀,客戶要求在百分之百電量的時候不顯示閃電 修改: frameworks\base\packages\SettingsLib\src\com\android\settingslib\graph\Bat
手機電池電量較準
嘗試電量計校準,方法如下: 一、滿電後持續充電 使用充電器給手機充電,充滿至100%後繼續保持充電狀態1小時左右,即可完成電量計校準。注意過程中手機需保持休眠,不可被操作或者APP後臺喚醒(建議睡覺時,將手機清理後臺、關閉網路充電一晚上)。 二、完整充放電並靜置 手機先充滿電
Android基礎(四)自動服務1.獲取電池電量
xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" a
讀取tif檔案 並且分別儲存
import os import numpy as np import glob import cv2 from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array
QT讀取csv檔案並且繪製折線圖
void MainWindow::readcsvfile() //讀取csv { QFile csvFile("C:/Users/Administrator/Desktop/Demo/0702.CSV"); QStringList csvList; csvList.cl
SIM868——AT+CBC 監測鋰電池電量理解與測試
【鋰電池供電電路及掉電閾值】:可支援輸入的鋰電池電壓為3.4V~4.4V,因訊號傳輸時電流大造成電壓降落,手冊中的測試條件顯示電壓降落最大350mV,而SIM868硬體自動掉電的閾值是3.0V,故設計時監測到鋰電池電壓下降到3.4V就該及時充電了。 【AT指令監測電量】AT+C
[RK3288][Android6.0] 除錯筆記 --- 電池電量一直顯示100%
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 跟蹤發現Android6.0相比之前的Android4.4會判斷Charger是否存在,不
電池電量百分比修改
/bootable/bootloader/lk/target/newmobi6735_66t_v_l1/include/target/cust_battery.h (充電電流修改) /kernel-3
讓狀態列上有顯示電池電量百分比
我們所使用的Android手機的狀態列上,一般都有電池電量百分比的顯示,方便使用者知悉手機剩餘百分之多少電量!我們的P6S手持機和ITAB-01平板上需要下拉狀態列才能看到電池電量百分比:為了讓使用者能夠更直觀的看到我們的產品上電池的使用情況,我在狀態列上添加了電池電量百分比
android 4.4 電池電量管理底層分析(C\C++層)
參考文獻:http://blog.csdn.net/wlwl0071986/article/details/38778897 簡介: Linux電池驅動用於和PMIC互動、負責監聽電池產生的相關事件,例如低電報警、電量發生變化、高溫報警、USB插拔等等。 Android電池
獲取Android裝置電池電量狀態
方法一:註冊廣播 這個方法網上一搜一大堆,我也貼出部分程式碼 IntentFilter filter2 = new IntentFilter(); filter2.addAction(Inten
ZIGBEE學習筆記五——讀取溫度電量資訊
1、感測器節點sensor採集資料發往收集節點collector 什麼時候感測器節點開始讀取溫度電池電量資訊的? 從繫結成功後開始的,看下zb_BindConfirm()這個函式: ********************************* void zb_BindConfirm( uint16
android 獲取充電狀態 電池電量
public class MainActivity extends Activity { /** * 先宣告一個 IntentFilter 物件 */ private IntentFilter mIntentFilter; private TextVie
電池電量資訊顯示
佈局:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"
電池電量報警關機策略和電量圖示變化規則表
為幫助大家除錯和查閱, jwisp總結了電池電量報警, 關機, 電量圖示變化規則表. 如下: 關鍵類和其位置: BatteryService.java (/frameworks/base/services/java/com/android/server/) com_android_server_Batter