我用過Peripheral和CentPeri例程都無法被多個手機同時連接
已經(jīng)將config.h的PERIPHERAL_MAX_CONNECTION改為3個
現(xiàn)象是只要有一個手機連接上,CH579就沒有了廣播,直接去連接也無法連上。
我用過Peripheral和CentPeri例程都無法被多個手機同時連接
已經(jīng)將config.h的PERIPHERAL_MAX_CONNECTION改為3個
現(xiàn)象是只要有一個手機連接上,CH579就沒有了廣播,直接去連接也無法連上。
這種問題都不是問題,你連主機從機都沒搞清楚。手機當(dāng)然只能連一個了,PERIPHERAL_MAX_CONNECTION是指該藍牙作為主機時最多能連接的從機數(shù)是3,你的明白?
這種問題都不是問題,你連主機從機都沒搞清楚。手機當(dāng)然只能連一個了,PERIPHERAL_MAX_CONNECTION是指該藍牙作為主機時最多能連接的從機數(shù)是3,你的明白?
我還是沒明白,如何修改才能讓多個手機同時連接一個藍牙設(shè)備呢?
除了將 PERIPHERAL_MAX_CONNECTION 改為3外
還需要在每次連接的事件里判斷如果已經(jīng)建立的連接沒有達到最大的連接數(shù), 再次手動開啟廣播.
樓上正解,已經(jīng)修改以下地方的代碼,可以多個手機同時連接藍牙設(shè)備了
原代碼:
static void Peripheral_LinkEstablished( gapRoleEvent_t * pEvent )
{
? gapEstLinkReqEvent_t *event = (gapEstLinkReqEvent_t *) pEvent;
??
? // See if already connected
? if( peripheralConnList.connHandle != GAP_CONNHANDLE_INIT )
? {
? ? GAPRole_TerminateLink( pEvent->linkCmpl.connectionHandle );
? ? PRINT( "Connection max...\n" );
? }
? ...
因為定義peripheralConnList時就定義了一個connHandle,當(dāng)?shù)谝粋€連接建立時peripheralConnList.connHandle已經(jīng)被第一個連接使用,所以當(dāng)?shù)诙€連接建立時peripheralConnList.connHandle?必然!= GAP_CONNHANDLE_INIT ,導(dǎo)致第二個連接被終止。
解決的方法就是修改定義
static peripheralConnItem_t peripheralConnList[PERIPHERAL_MAX_CONNECTION];
當(dāng)連接建立時遍歷peripheralConnList[PERIPHERAL_MAX_CONNECTION],將新連接的event->connectionHandle給未使用的peripheralConnList[i].connHandle。
然后判斷是否已經(jīng)達到最大的連接數(shù),是否開啟廣播。