無(wú)線設(shè)備間時(shí)間同步的方法、無(wú)線設(shè)備和無(wú)線通信系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開(kāi)了一種無(wú)線設(shè)備間時(shí)間同步的方法、無(wú)線設(shè)備和無(wú)線通信系統(tǒng)。所述方法包括:獲取第一無(wú)線設(shè)備與第二無(wú)線設(shè)備單次同步操作的時(shí)間差,對(duì)所述單次同步操作對(duì)應(yīng)的時(shí)間差進(jìn)行有效性過(guò)濾,提取出有效的時(shí)間差數(shù)據(jù);對(duì)設(shè)定時(shí)間段內(nèi)的多個(gè)單次同步操作對(duì)應(yīng)的有效的時(shí)間差數(shù)據(jù)進(jìn)行平滑處理,獲得第二無(wú)線設(shè)備相對(duì)于第一無(wú)線設(shè)備在所述設(shè)定時(shí)間段內(nèi)的平均時(shí)間差;每隔所述設(shè)定時(shí)間段根據(jù)獲得的所述平均時(shí)間差調(diào)整第二無(wú)線設(shè)備的系統(tǒng)時(shí)間,以使得第二無(wú)線設(shè)備與第一無(wú)線設(shè)備時(shí)間同步。本發(fā)明的技術(shù)方案,以不依賴硬件的方式實(shí)現(xiàn)無(wú)線設(shè)備間高精度的時(shí)間同步。
【專利說(shuō)明】無(wú)線設(shè)備間時(shí)間同步的方法、無(wú)線設(shè)備和無(wú)線通信系統(tǒng)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及無(wú)線通信【技術(shù)領(lǐng)域】,特別涉及一種無(wú)線設(shè)備間時(shí)間同步方法、無(wú)線設(shè) 備和無(wú)線通信系統(tǒng)。
【背景技術(shù)】
[0002] 隨著人們對(duì)無(wú)線音箱的音質(zhì)的需求越來(lái)越高,已不滿足于藍(lán)牙傳輸有損的音頻數(shù) 據(jù),基于WiFi的無(wú)損音頻傳輸系統(tǒng)隨之誕生。
[0003] 在某些通過(guò)WiFi或WiFi-Direct連接的音響系統(tǒng)中,若每個(gè)音箱只播放一個(gè)聲 道,音箱與音箱之間的播放同步就顯得極為重要。舉例來(lái)說(shuō),在一個(gè)音樂(lè)播放系統(tǒng)中,有兩 個(gè)音箱。通過(guò)設(shè)置使音箱1播放一首立體聲音樂(lè)的左聲道,音箱2播放同一首立體聲音樂(lè) 的右聲道,如果兩音箱播放的時(shí)間差大于5ms,人耳可明顯感受到播放不同步,大大影響聽(tīng) 音樂(lè)的體驗(yàn)。
[0004] 現(xiàn)有方案可采用硬件及軟件兩類實(shí)現(xiàn)方式,使用硬件實(shí)現(xiàn)高精度時(shí)間同步,可'以 達(dá)到較高的精度,但成本過(guò)高;而現(xiàn)有使用軟件實(shí)現(xiàn)的方案,雖然成本低,但時(shí)間同步精度 較差。
【發(fā)明內(nèi)容】
[0005] 有鑒于此,本發(fā)明提供了一種無(wú)線設(shè)備間時(shí)間同步的方法、無(wú)線設(shè)備和無(wú)線通信 系統(tǒng),以不依賴硬件的方式實(shí)現(xiàn)無(wú)線設(shè)備間高精度的時(shí)間同步。
[0006] 為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0007] 本發(fā)明公開(kāi)的一種無(wú)線設(shè)備間時(shí)間同步的方法,所述方法包括:
[0008] 通過(guò)在第一無(wú)線設(shè)備和第二無(wú)線設(shè)備的單次同步操作中,獲取到的第一無(wú)線設(shè)備 和第二無(wú)線設(shè)備收發(fā)相應(yīng)數(shù)據(jù)包的時(shí)間,計(jì)算該單次同步操作對(duì)應(yīng)的第二無(wú)線設(shè)備相對(duì)于 第一無(wú)線設(shè)備的時(shí)間差;
[0009] 對(duì)所述單次同步操作對(duì)應(yīng)的時(shí)間差進(jìn)行有效性過(guò)濾,提取出有效的時(shí)間差數(shù)據(jù);
[0010] 對(duì)設(shè)定時(shí)間段內(nèi)的多個(gè)單次同步操作對(duì)應(yīng)的有效的時(shí)間差數(shù)據(jù)進(jìn)行平滑處理,獲 得第二無(wú)線設(shè)備相對(duì)于第一無(wú)線設(shè)備在所述設(shè)定時(shí)間段內(nèi)的平均時(shí)間差;
[0011] 每隔所述設(shè)定時(shí)間段根據(jù)獲得的所述平均時(shí)間差調(diào)整第二無(wú)線設(shè)備的系統(tǒng)時(shí)間, 以使得第二無(wú)線設(shè)備與第一無(wú)線設(shè)備時(shí)間同步。
[0012] 在上述方法中,所述通過(guò)在第一無(wú)線設(shè)備和第二無(wú)線設(shè)備的單次同步操作中,獲 取到的第一無(wú)線設(shè)備和第二無(wú)線設(shè)備收發(fā)相應(yīng)數(shù)據(jù)包的時(shí)間,計(jì)算該單次同步操作對(duì)應(yīng)的 第二無(wú)線設(shè)備相對(duì)于第一無(wú)線設(shè)備的時(shí)間差包括:
[0013] 第一無(wú)線設(shè)備以預(yù)定的時(shí)間間隔廣播或組播進(jìn)行同步的請(qǐng)求包,所述請(qǐng)求包中攜 帶請(qǐng)求包序號(hào)、發(fā)送請(qǐng)求包的本地系統(tǒng)時(shí)間TS1 ;
[0014] 第二無(wú)線設(shè)備接收所述請(qǐng)求包并廣播或組播發(fā)送應(yīng)答包,所述應(yīng)答包中攜帶第二 無(wú)線設(shè)備自身的客戶端ID,同時(shí)第二無(wú)線設(shè)備記錄下所述請(qǐng)求包序號(hào)、接收到所述請(qǐng)求包 的本地系統(tǒng)時(shí)間TC1、發(fā)送所述應(yīng)答包的本地系統(tǒng)時(shí)間TC2和所述請(qǐng)求包中的所述TS1 ;
[0015] 第一無(wú)線設(shè)備接收到所述應(yīng)答包后發(fā)送回應(yīng)包,所述回應(yīng)包中攜帶所回應(yīng)的第二 無(wú)線設(shè)備的客戶端ID和接收到所述應(yīng)答包的本地系統(tǒng)時(shí)間TS2 ;
[0016] 第二無(wú)線設(shè)備根據(jù)自身的ID校驗(yàn)所述回應(yīng)包,如果所述回應(yīng)包中攜帶的無(wú)線設(shè) 備的ID與自身的客戶端ID-致,則記錄下所述回應(yīng)包中的所述TS2 ;
[0017] 第二無(wú)線設(shè)備根據(jù)同一請(qǐng)求包序號(hào)下的所述TC1、所述TC2、所述TS1和所述TS2, 計(jì)算第二無(wú)線設(shè)備相對(duì)于第一無(wú)線設(shè)備的單次同步操作的時(shí)間差。
[0018] 在上述方法中,所述根據(jù)同一請(qǐng)求包序號(hào)下的所述TC1、所述TC2、所述TS1和所述 TS2,計(jì)算第二無(wú)線設(shè)備相對(duì)于第一無(wú)線設(shè)備的單次同步操作的時(shí)間差包括:
[0019] 基于下述公式,根據(jù)所述TC1、TC2、TS1和TS2計(jì)算第一無(wú)線設(shè)備相對(duì)于第二無(wú)線 設(shè)備的單次同步操作的時(shí)間差,以及單次同步操作下第一無(wú)線設(shè)備與第二無(wú)線設(shè)備間數(shù)據(jù) 包的平均傳輸時(shí)間:
[0020] Ttrans = (TC1+TS2-TS1-TC2)/2
[0021] Tdiff = (TCl-TS2-TSl+TC2)/2
[0022] 其中,Tdiff為單次同步操作的時(shí)間差,Ttrans為單次同步操作的平均傳輸時(shí)間。
[0023] 在上述方法中,所述對(duì)所述單次同步操作對(duì)應(yīng)的時(shí)間差進(jìn)行有效性過(guò)濾包括:
[0024]確定某單次同步操作過(guò)程中出現(xiàn)數(shù)據(jù)包丟失或異常時(shí),則過(guò)濾掉該單次同步操作 的時(shí)間差數(shù)據(jù)。
[0025]其中,所述確定某單次同步操作過(guò)程中出現(xiàn)數(shù)據(jù)包丟失或異常包括:
[0026]第二無(wú)線設(shè)備根據(jù)自身的客戶端ID校驗(yàn)所述回應(yīng)包,如果所述回應(yīng)包中攜帶的 ID與自身的客戶端ID不一致,確定所述單次同步操作過(guò)程中出現(xiàn)數(shù)據(jù)包異常;或者,
[0027]第二無(wú)線設(shè)備判斷在允許的時(shí)間范圍內(nèi)沒(méi)有接收到相應(yīng)的請(qǐng)求包序號(hào)下的請(qǐng)求 包或應(yīng)答包時(shí),確定所述單次同步操作過(guò)程中出現(xiàn)數(shù)據(jù)包丟失。
[0028]在上述方法中,所述對(duì)所述單次同步操作對(duì)應(yīng)的時(shí)間差進(jìn)行有效性過(guò)濾包括: [0029]選取第一無(wú)線設(shè)備和第二無(wú)線設(shè)備之間數(shù)據(jù)包的平均傳輸時(shí)間的閾值;
[0030]若某單次同步操作的平均傳輸時(shí)間超過(guò)所述閾值,則過(guò)濾掉該單次同步操作的時(shí) 間差數(shù)據(jù)。
[0031]在上述方法中,所述對(duì)設(shè)定時(shí)間段內(nèi)的多個(gè)單次同步操作對(duì)應(yīng)的有效的時(shí)間差數(shù) 據(jù)進(jìn)行平滑處理包括:
[0032]根據(jù)每個(gè)單次同步操作的同步時(shí)間和該單次同步操作對(duì)應(yīng)的時(shí)間差數(shù)據(jù),采用最 小二乘曲線擬合的方式進(jìn)行平滑處理;
[0033]或者,對(duì)設(shè)定時(shí)間段內(nèi)的多個(gè)單次同步操作對(duì)應(yīng)的有效的時(shí)間差數(shù)據(jù)求均值。
[0034]在上述方法中,所述根據(jù)獲得的所述平均時(shí)間差調(diào)整第二無(wú)線設(shè)備的系統(tǒng)時(shí)間包 括:
[0035]、使用Linux操作系統(tǒng)的時(shí)鐘調(diào)節(jié)命令acUtimex,根據(jù)獲得的所述平均時(shí)間差對(duì)第 二無(wú)線設(shè)備的系統(tǒng)時(shí)鐘或系統(tǒng)時(shí)鐘的計(jì)數(shù)器進(jìn)行調(diào)整。
[0036]本發(fā)明公開(kāi)的一種無(wú)線設(shè)備,包括:
[0037]單次同步計(jì)算單元,用于通過(guò)在第一無(wú)線設(shè)備和自身的單次同步操作中,獲取到 的第一無(wú)線設(shè)備和自身收發(fā)相應(yīng)數(shù)據(jù)包的時(shí)間,計(jì)算該單次同步操作對(duì)應(yīng)的自身相對(duì)于第 一無(wú)線設(shè)備的時(shí)間差;
[0038] 過(guò)濾單元,用于對(duì)所述單次同步操作對(duì)應(yīng)的時(shí)間差進(jìn)行有效性過(guò)濾,提取出有效 的時(shí)間差數(shù)據(jù);
[0039] 平滑單元,用于對(duì)設(shè)定時(shí)間段內(nèi)的多個(gè)單次同步操作對(duì)應(yīng)的有效的時(shí)間差數(shù)據(jù)進(jìn) 行平滑處理,獲得自身相對(duì)于所述第一無(wú)線設(shè)備在所述設(shè)定時(shí)間段內(nèi)的平均時(shí)間差;
[0040] 時(shí)間調(diào)整單元,用于每隔所述設(shè)定時(shí)間段根據(jù)獲得的所述平均時(shí)間差調(diào)整自身的 系統(tǒng)時(shí)間,以使得自身與所述第一無(wú)線設(shè)備時(shí)間同步。
[0041] 在上述無(wú)線設(shè)備中,所述單次同步計(jì)算單元包括:
[0042] 請(qǐng)求接收模塊,用于接收第一無(wú)線設(shè)備以預(yù)定的時(shí)間間隔廣播或組播進(jìn)行同步的 請(qǐng)求包,所述請(qǐng)求包中攜帶請(qǐng)求包序號(hào)、發(fā)送請(qǐng)求包的本地系統(tǒng)時(shí)間TS1 ;
[0043] 應(yīng)答發(fā)送模塊,用于向所述第一無(wú)線設(shè)備廣播或組播發(fā)送應(yīng)答包,所述應(yīng)答包中 攜帶自身的ID,同時(shí)記錄下所述請(qǐng)求包序號(hào)、接收到請(qǐng)求包的本地系統(tǒng)時(shí)間TC1、發(fā)送應(yīng)答 包的本地系統(tǒng)時(shí)間TC2和所述TS1 ;
[0044] 回應(yīng)校驗(yàn)?zāi)K,用于根據(jù)自身所屬無(wú)線設(shè)備的客戶端ID校驗(yàn)所述第一無(wú)線設(shè)備 發(fā)送的回應(yīng)包,所述回應(yīng)包中攜帶無(wú)線設(shè)備的ID和所述第一無(wú)線設(shè)備接收到所述應(yīng)答包 的本地系統(tǒng)時(shí)間TS2,如果所述回應(yīng)包中攜帶的ID與自身所屬無(wú)線設(shè)備的客戶端ID -致, 則記錄下所述TS2 ;
[0045] 同步計(jì)算模塊,用于根據(jù)同一請(qǐng)求包序號(hào)下的所述TC1、所述TC2、所述TS1和所述 TS2,計(jì)算自身所屬的無(wú)線設(shè)備相對(duì)于第一無(wú)線設(shè)備的單次同步操作的時(shí)間差;
[0046] 其中,所述同步計(jì)算模塊,具體用于基于下述公式,根據(jù)所述TCI、TC2、TS1和TS2 計(jì)算第一無(wú)線設(shè)備相對(duì)于自身所屬的無(wú)線設(shè)備的單次同步操作的時(shí)間差,以及單次同步操 作下第一無(wú)線設(shè)備與自身所屬的無(wú)線設(shè)備間數(shù)據(jù)包的平均傳輸時(shí)間:
[0047] Ttrans = (TCl+TS2-TSl-TC2)/2
[0048] Tdiff = (TCl-TS2-TSl+TC2)/2
[0049] 其中,Tdiff為單次同步操作的時(shí)間差,Ttrans為單次同步操作的平均傳輸時(shí)間。
[0050] 在上述無(wú)線設(shè)備中,所述過(guò)濾單元,具體用于確定某單次同步操作過(guò)程中出現(xiàn)數(shù) 據(jù)包丟失或異常時(shí),則過(guò)濾掉該單次同步操作的時(shí)間差數(shù)據(jù);以及,選取第一無(wú)線設(shè)備和自 身所屬無(wú)線設(shè)備之間數(shù)據(jù)包的平均傳輸時(shí)間的閾值,若某單次同步操作的平均傳輸時(shí)間超 過(guò)所述閾值,則過(guò)濾掉該單次同步操作的時(shí)間差數(shù)據(jù)。
[0051] 在上述無(wú)線設(shè)備中,所述平滑單元,具體用于根據(jù)每個(gè)單次同步操作的同步時(shí)間 和該單次同步操作對(duì)應(yīng)的時(shí)間差數(shù)據(jù),采用最小二乘曲線擬合的方式進(jìn)行平滑處理;或者, 對(duì)設(shè)定時(shí)間段內(nèi)的多個(gè)單次同步操作對(duì)應(yīng)的有效的時(shí)間差數(shù)據(jù)求均值。
[0052] 本發(fā)明公開(kāi)的一種無(wú)線通信系統(tǒng),所述系統(tǒng)包括:用于提供音頻源第一無(wú)線設(shè)備、 一個(gè)或多個(gè)作為無(wú)線音箱的第二無(wú)線設(shè)備,其中第一無(wú)線設(shè)備與第二無(wú)線設(shè)備通過(guò) WIFI 或WIFI直連建立連接;所述第二無(wú)線設(shè)備為上述的無(wú)線設(shè)備。
[0053] 本發(fā)明的技術(shù)效果是:
[0054]本發(fā)明公開(kāi)的無(wú)線設(shè)備間時(shí)間同步方法、無(wú)線設(shè)備和無(wú)線通信系統(tǒng),無(wú)需增加額 外的硬件,通過(guò)對(duì)獲得的單次同步操作的時(shí)間差數(shù)據(jù),進(jìn)行有效性過(guò)濾以剔除不良的數(shù)據(jù), 并對(duì)設(shè)定時(shí)間段內(nèi)的有效性過(guò)濾后的多個(gè)單次同步操作的時(shí)間差數(shù)據(jù)進(jìn)行平滑處理,能夠 得到精度較尚的設(shè)定時(shí)間段內(nèi)的平均時(shí)間差,從而每隔設(shè)定時(shí)間段根據(jù)獲得的平均時(shí)間差 數(shù)據(jù)對(duì)待同步的無(wú)線設(shè)備的系統(tǒng)時(shí)間進(jìn)行調(diào)整,可以將無(wú)線設(shè)備間的系統(tǒng)時(shí)間差同步至低 于lms,實(shí)現(xiàn)無(wú)線設(shè)備間高精度的時(shí)間同步。
[0055]進(jìn)一步的,本發(fā)明公開(kāi)的無(wú)線設(shè)備間時(shí)間同步方法、無(wú)線設(shè)備和無(wú)線通信系統(tǒng),通 過(guò)使用廣播或組播方式交互數(shù)據(jù)包,能夠避免在單次同步操作中,重傳數(shù)據(jù)包造成的平均 傳輸時(shí)間的誤差,從而能夠基于平均傳輸時(shí)間準(zhǔn)確地剔除掉無(wú)效的時(shí)間差數(shù)據(jù),保證了單 次同步操作的時(shí)間差的精度。
【專利附圖】
【附圖說(shuō)明】
[0056]圖1是本發(fā)明實(shí)施例中的一種無(wú)線設(shè)備間時(shí)間同步方法的流程圖;
[0057]圖2是本發(fā)明實(shí)施例中的獲得第二無(wú)線設(shè)備相對(duì)于第一無(wú)線設(shè)備的單次同步操 作對(duì)應(yīng)的時(shí)間差的流程圖;
[0058]圖3是本發(fā)明給出的在一次單次同步操作中數(shù)據(jù)包交互過(guò)程的示意圖;
[0059]圖4是本發(fā)明給出的在多次單次同步操作中數(shù)據(jù)包交互過(guò)程的示意圖;
[0060]圖5是將本發(fā)明一個(gè)具體實(shí)施例的數(shù)值對(duì)繪制在直角坐標(biāo)系中的示意圖;
[0061]圖6是將根據(jù)圖5中的數(shù)值對(duì)得到的最小二乘法數(shù)值線也繪制在直角坐標(biāo)系中的 示意圖;
[0062]圖7是本發(fā)明實(shí)施例中的一種無(wú)線設(shè)備的結(jié)構(gòu)示意圖;
[0063]圖8本發(fā)明實(shí)施例中的單次同步計(jì)算單元的組成示意圖;
[0064]圖9是本發(fā)明實(shí)施例中的無(wú)線通信系統(tǒng)的組成示意圖。
【具體實(shí)施方式】
[0065]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方 式作進(jìn)一步地詳細(xì)描述。
[0066]在下述描述中,第一無(wú)線設(shè)備作為時(shí)間同步的主設(shè)備,該主設(shè)備可以為 Server (服務(wù)器),提供時(shí)間同步的時(shí)間源。第二無(wú)線設(shè)備作為時(shí)間同步的從設(shè)備,該從設(shè) 備可以為Cl ient (客戶端),需要得到本地系統(tǒng)時(shí)間與Server系統(tǒng)時(shí)間的時(shí)間差,從而調(diào)整 本地系統(tǒng)時(shí)間或調(diào)整本地系統(tǒng)時(shí)間計(jì)數(shù)器,以與Server的系統(tǒng)時(shí)間保持同步。在一個(gè)無(wú)線 通信系統(tǒng)中,Server與一個(gè)或多個(gè)Client通過(guò)WIFI或WIFI-Direct (WIFI直連)建立連 接。
[0067] 圖1是本發(fā)明實(shí)施例中的一種無(wú)線設(shè)備間時(shí)間同步方法的流程圖。如圖1所示, 該方法包括:
[0068] 步驟S11,通過(guò)在第一無(wú)線設(shè)備和第二無(wú)線設(shè)備的單次同步操作中,獲取到的第一 無(wú)線設(shè)備和第二無(wú)線設(shè)備收發(fā)相應(yīng)數(shù)據(jù)包的時(shí)間,計(jì)算該單次同步操作對(duì)應(yīng)的第二無(wú)線設(shè) 備相對(duì)于第一無(wú)線設(shè)備的時(shí)間差。
[0069] 在本發(fā)明的一個(gè)實(shí)施例中,如圖2所示,步驟S11獲得第二無(wú)線設(shè)備相對(duì)于第一無(wú) 線設(shè)備的單次同步操作對(duì)應(yīng)的時(shí)間差具體包括:
[0070] 步驟S101,第一無(wú)線設(shè)備以預(yù)定的時(shí)間間隔不間斷的廣播或組播進(jìn)行同步的請(qǐng)求 包,所述請(qǐng)求包中攜帶請(qǐng)求包序號(hào)、發(fā)送請(qǐng)求包的本地系統(tǒng)時(shí)間TS1。
[0071] 第一無(wú)線設(shè)備Server不間斷的廣播或組播進(jìn)行同步的請(qǐng)求包,請(qǐng)求包中必須包 含數(shù)據(jù)包序號(hào)(以避免丟包的影響)、當(dāng)前的系統(tǒng)時(shí)間TS1。
[OO72]步驟S102,第二無(wú)線設(shè)備接收該請(qǐng)求包并廣播或組播發(fā)送應(yīng)答包(ACK),應(yīng)答包 中攜帶第二無(wú)線設(shè)備自身的Client ID(客戶端ID),同時(shí)第二無(wú)線設(shè)備記錄下請(qǐng)求包序 號(hào)、接收到請(qǐng)求包的本地系統(tǒng)時(shí)間TC1、發(fā)送應(yīng)答包的本地系統(tǒng)時(shí)間TC2和請(qǐng)求包中的上述 當(dāng)前的系統(tǒng)時(shí)間TS1。
[0073]第二無(wú)線設(shè)備Client在本地系統(tǒng)時(shí)間TC1接收到Server廣播的數(shù)據(jù)包,保存TS1 和TC1,隨后以廣播或組播方式向Server發(fā)送ACK,ACK包中需包含 client iD,client ID 用來(lái)區(qū)分不同的Client端,同時(shí)Client需保存發(fā)送ACK包的本地時(shí)間TC2。
[0074]步驟Sl〇3,第一無(wú)線設(shè)備接收到應(yīng)答包后發(fā)送回應(yīng)包,回應(yīng)包中攜帶所回應(yīng)的第 二無(wú)線設(shè)備的ID和接收到應(yīng)答包的本地系統(tǒng)時(shí)間TS2。
[0075]第一無(wú)線設(shè)備Server端接收到ACK包,保存接收到ACK包時(shí)的系統(tǒng)時(shí)間TS2 ;隨 后f TS2及ACK包中的Client ID發(fā)送到Client端,此處并不限制采用何種傳輸方式,可 以采用廣播或組播方式,也可以采用非廣播和組播的方式。
[0076]步驟S104,第二無(wú)線設(shè)備根據(jù)自身的client ID校驗(yàn)所述回應(yīng)包,如果回應(yīng)包中 攜帶的ID與自身的Client ID -致,則記錄下回應(yīng)包中的所述TS2。
[0077]第二無(wú)線設(shè)備Client收到Server發(fā)送的回應(yīng)數(shù)據(jù)包后,校驗(yàn)Client ID是否正 確,若真,則保存TS2 ;否則丟掉回應(yīng)數(shù)據(jù)包。
[0078]上述步驟S101-S104為一次同步操作,若中間任意一次數(shù)據(jù)丟失或異常,則結(jié)束 本次同步操作,從S101重新執(zhí)行,開(kāi)始下一次同步操作。
[0079]根據(jù)上述說(shuō)明,上述一次單次同步操作中數(shù)據(jù)包交互過(guò)程的示意圖如圖3所示, 可見(jiàn)本實(shí)施例中的第一無(wú)線設(shè)備和第二無(wú)線設(shè)備的單次同步操作包括:1)第二無(wú)線設(shè)備 接收第一無(wú)線設(shè)備發(fā)送的用于同步的請(qǐng)求包;2)第二無(wú)線設(shè)備根據(jù)該請(qǐng)求包向第一無(wú)線 設(shè)備發(fā)送應(yīng)答包;3)第二無(wú)線設(shè)備接收第一無(wú)線設(shè)備根據(jù)該應(yīng)答包返回的回應(yīng)包。
[00S0] 周期性重復(fù)上述步驟S101-S104,其多個(gè)單次同步操作中數(shù)據(jù)包交互過(guò)程如圖4 所示,在圖4所示的場(chǎng)景中,在設(shè)定時(shí)間段內(nèi)包括N個(gè)單次同步操作。
[0081] 步驟S105,第二無(wú)線設(shè)備根據(jù)同一請(qǐng)求包序號(hào)下的上述TC1、TC2、TS1和TS2,計(jì)算 第二無(wú)線設(shè)備相對(duì)于第一無(wú)線設(shè)備的單次同步操作的時(shí)間差。
[0082] 具體地,第二無(wú)線設(shè)備根據(jù)時(shí)間傳輸下述等式:
[0083] TCI = TSl+Tdiff+Ttransl (1)
[0084] TS2+Tdiff = TC2+Ttrans2 (2)
[0085] 其中,Tdiff為單次同步操作的時(shí)間差,Ttransl為單次同步操作下請(qǐng)求包的傳輸 時(shí)間,Ttrans2為單次同步操作下應(yīng)答包的傳輸時(shí)間。
[0086] 合理假設(shè)通訊路徑是對(duì)稱的,即Ttransl = Ttrans2,得到單次同步操作的平均傳 輸時(shí)間Ttrans和單次同步操作的時(shí)間差Tdiff :
[0087] Ttrans = (TC1+TS2-TS卜TC2)/2 ;
[0088] Tdiff = (TCl-TS2-TSl+TC2)/2〇
[0089] 需要說(shuō)明的是,影響Tdiff精度有兩種因素,第一種因素是從Server傳輸?shù)?Client的時(shí)間與從Client傳輸?shù)絊erver的時(shí)間不同,而使用WiFi或WIFI-Direct進(jìn)行 傳輸會(huì)加劇此因素的不良影響。第二種因素是對(duì)不采用廣播和組播的場(chǎng)景,數(shù)據(jù)包如果丟 失,通常情況下會(huì)引起重傳,而重傳包中的時(shí)間信息,例如步驟S11中從Server到Client 數(shù)據(jù)包中TS1,并沒(méi)有被更新,這樣會(huì)加劇第一種因素引起的影響。所以在本發(fā)明的上述步 驟S11和S12中的數(shù)據(jù)包都使用廣播或組播進(jìn)行交互,以避免在一次同步操作中,重傳數(shù)據(jù) 造成的傳輸時(shí)間的誤差。
[0090] 步驟S12,對(duì)所述單次同步操作對(duì)應(yīng)的時(shí)間差進(jìn)行有效性過(guò)濾,提取出有效的時(shí)間 差數(shù)據(jù)。
[0091] 為減少對(duì)上述Tdiff精度的影響,需要進(jìn)行一定的算法,過(guò)濾不良數(shù)據(jù),以提高得 到的時(shí)間差精度。
[0092] 對(duì)單次同步操作的時(shí)間差進(jìn)行有效性過(guò)濾的情形一:
[0093] 確定某單次同步操作過(guò)程中出現(xiàn)數(shù)據(jù)包丟失或異常時(shí),則過(guò)濾掉該單次同步操作 的時(shí)間差數(shù)據(jù)。其中,確定某單次同步操作過(guò)程中出現(xiàn)數(shù)據(jù)包丟失或異常包括:
[0094] 第二無(wú)線設(shè)備根據(jù)自身的客戶端ID校驗(yàn)所述回應(yīng)包,如果所述回應(yīng)包中攜帶的 ID與自身的客戶端ID不一致,確定所述單次同步操作過(guò)程中出現(xiàn)數(shù)據(jù)包異常;或者,
[0095] 第二無(wú)線設(shè)備判斷在允許的時(shí)間范圍內(nèi)沒(méi)有接收到相應(yīng)的請(qǐng)求包序號(hào)下的請(qǐng)求 包或應(yīng)答包時(shí),確定所述單次同步操作過(guò)程中出現(xiàn)數(shù)據(jù)包丟失。
[0096] 對(duì)單次同步操作的時(shí)間差進(jìn)行有效性過(guò)濾的情形二:
[0097]選取第一無(wú)線設(shè)備和第二無(wú)線設(shè)備之間數(shù)據(jù)包的平均傳輸時(shí)間的閾值;若某單次 同步操作的平均傳輸時(shí)間超過(guò)所述閾值,則過(guò)濾掉該單次同步操作的時(shí)間差數(shù)據(jù)。
[0098] 這是因?yàn)椋喝绻谝淮瓮讲僮鬟^(guò)程中數(shù)據(jù)包丟失或異常,將得不到有效的單次 同步操作的時(shí)間差,對(duì)這次同步操作得到的數(shù)據(jù)應(yīng)當(dāng)排除;另外,由于主從設(shè)備時(shí)間差的存 在,無(wú)法得到真實(shí)的Trans 1及Trans2,進(jìn)而也就無(wú)法算出單次同步操作的時(shí)間差Tdif f,但 可通過(guò)計(jì)算單次同步操作的平均傳輸時(shí)間Ttrans,如果平均傳輸時(shí)間Ttrans過(guò)大,通常情 況都是由于單向傳輸時(shí)間過(guò)大引起的,因此可根據(jù)單次同步操作對(duì)應(yīng)的平均傳輸時(shí)間對(duì)該 單次同步操作的時(shí)間差數(shù)據(jù)Tdiff進(jìn)行過(guò)濾。
[0099] 步驟S13,對(duì)設(shè)定時(shí)間段內(nèi)的多個(gè)單次同步操作對(duì)應(yīng)的有效的時(shí)間差數(shù)據(jù)進(jìn)行平 滑處理,獲得第二無(wú)線設(shè)備相對(duì)于第一無(wú)線設(shè)備在所述設(shè)定時(shí)間段內(nèi)的平均時(shí)間差。
[0100] 經(jīng)過(guò)過(guò)濾后的數(shù)據(jù)可以進(jìn)行下一步的主從設(shè)備的時(shí)間差計(jì)算,但因無(wú)線網(wǎng)絡(luò)傳輸 時(shí)間不確定性的影響,需要對(duì)設(shè)定時(shí)間段內(nèi)的多次單次同步操作的時(shí)間差Tdiff進(jìn)行平滑 處理。因不同的設(shè)備具有不同的計(jì)算能力,可采用不同的算法進(jìn)行處理。
[0101] 一種平滑處理實(shí)現(xiàn)方法:最小二乘法。
[0102] 根據(jù)每個(gè)單次同步操作的同步時(shí)間和該單次同步操作對(duì)應(yīng)的時(shí)間差數(shù)據(jù),采用最 小二乘曲線擬合的方式進(jìn)行平滑處理。
[0103] 具體地,利用最小二乘法公式Y(jié) = a+b*X,其中Y為單次同步操作的時(shí)間差,X為該 單次同步操作對(duì)應(yīng)的同步時(shí)間。
[0104] 根據(jù)設(shè)定時(shí)間段內(nèi)的有效性過(guò)濾后的多次單次同步操作的時(shí)間差π及對(duì)應(yīng)的時(shí) 間點(diǎn))Ci的數(shù)值對(duì),通過(guò)如下公式得到a與b的值,其中m為數(shù)值對(duì)的個(gè)數(shù):
[0105]
【權(quán)利要求】
1. 一種無(wú)線設(shè)備間時(shí)間同步的方法,其特征在于,所述方法包括: 通過(guò)在第一無(wú)線設(shè)備和第二無(wú)線設(shè)備的單次同步操作中,獲取到的第一無(wú)線設(shè)備和第 二無(wú)線設(shè)備收發(fā)相應(yīng)數(shù)據(jù)包的時(shí)間,計(jì)算該單次同步操作對(duì)應(yīng)的第二無(wú)線設(shè)備相對(duì)于第一 無(wú)線設(shè)備的時(shí)間差; 對(duì)所述單次同步操作對(duì)應(yīng)的時(shí)間差進(jìn)行有效性過(guò)濾,提取出有效的時(shí)間差數(shù)據(jù); 對(duì)設(shè)定時(shí)間段內(nèi)的多個(gè)單次同步操作對(duì)應(yīng)的有效的時(shí)間差數(shù)據(jù)進(jìn)行平滑處理,獲得第 二無(wú)線設(shè)備相對(duì)于第一無(wú)線設(shè)備在所述設(shè)定時(shí)間段內(nèi)的平均時(shí)間差; 每隔所述設(shè)定時(shí)間段根據(jù)獲得的所述平均時(shí)間差調(diào)整第二無(wú)線設(shè)備的系統(tǒng)時(shí)間,以使 得第二無(wú)線設(shè)備與第一無(wú)線設(shè)備時(shí)間同步。
2. 如權(quán)利要求1所述的方法,其特征在于,所述通過(guò)在第一無(wú)線設(shè)備和第二無(wú)線設(shè)備 的單次同步操作中,獲取到的第一無(wú)線設(shè)備和第二無(wú)線設(shè)備收發(fā)相應(yīng)數(shù)據(jù)包的時(shí)間,計(jì)算 該單次同步操作對(duì)應(yīng)的第二無(wú)線設(shè)備相對(duì)于第一無(wú)線設(shè)備的時(shí)間差包括: 第一無(wú)線設(shè)備以預(yù)定的時(shí)間間隔廣播或組播進(jìn)行同步的請(qǐng)求包,所述請(qǐng)求包中攜帶請(qǐng) 求包序號(hào)、發(fā)送請(qǐng)求包的本地系統(tǒng)時(shí)間TS1 ; 第二無(wú)線設(shè)備接收所述請(qǐng)求包并廣播或組播發(fā)送應(yīng)答包,所述應(yīng)答包中攜帶第二無(wú)線 設(shè)備自身的客戶端ID,同時(shí)第二無(wú)線設(shè)備記錄下所述請(qǐng)求包序號(hào)、接收到所述請(qǐng)求包的本 地系統(tǒng)時(shí)間TC1、發(fā)送所述應(yīng)答包的本地系統(tǒng)時(shí)間TC2和所述請(qǐng)求包中的所述TS1 ; 第一無(wú)線設(shè)備接收到所述應(yīng)答包后發(fā)送回應(yīng)包,所述回應(yīng)包中攜帶所回應(yīng)的第二無(wú)線 設(shè)備的客戶端ID和接收到所述應(yīng)答包的本地系統(tǒng)時(shí)間TS2 ; 第二無(wú)線設(shè)備根據(jù)自身的ID校驗(yàn)所述回應(yīng)包,如果所述回應(yīng)包中攜帶的無(wú)線設(shè)備的 ID與自身的客戶端ID-致,則記錄下所述回應(yīng)包中的所述TS2 ; 第二無(wú)線設(shè)備根據(jù)同一請(qǐng)求包序號(hào)下的所述TC1、所述TC2、所述TS1和所述TS2,計(jì)算 第二無(wú)線設(shè)備相對(duì)于第一無(wú)線設(shè)備的單次同步操作的時(shí)間差。
3. 如權(quán)利要求2所述的方法,其特征在于,所述根據(jù)同一請(qǐng)求包序號(hào)下的所述TC1、所 述TC2、所述TS1和所述TS2,計(jì)算第二無(wú)線設(shè)備相對(duì)于第一無(wú)線設(shè)備的單次同步操作的時(shí) 間差包括: 基于下述公式,根據(jù)所述TCI、TC2、TS1和TS2計(jì)算第一無(wú)線設(shè)備相對(duì)于第二無(wú)線設(shè)備 的單次同步操作的時(shí)間差,以及單次同步操作下第一無(wú)線設(shè)備與第二無(wú)線設(shè)備間數(shù)據(jù)包的 平均傳輸時(shí)間: Ttrans = (TC1+TS2-TS1-TC2)/2 Tdiff = (TCl-TS2-TSl+TC2)/2 其中,Tdiff為單次同步操作的時(shí)間差,Ttrans為單次同步操作的平均傳輸時(shí)間。
4. 如權(quán)利要求1-3任一項(xiàng)所述的方法,其特征在于,所述對(duì)所述單次同步操作對(duì)應(yīng)的 時(shí)間差進(jìn)行有效性過(guò)濾包括: 確定某單次同步操作過(guò)程中出現(xiàn)數(shù)據(jù)包丟失或異常時(shí),則過(guò)濾掉該單次同步操作的時(shí) 間差數(shù)據(jù)。
5. 如權(quán)利要求4所述的方法,其特征在于,所述確定某單次同步操作過(guò)程中出現(xiàn)數(shù)據(jù) 包丟失或異常包括: 第二無(wú)線設(shè)備根據(jù)自身的客戶端ID校驗(yàn)所述回應(yīng)包,如果所述回應(yīng)包中攜帶的ID與 自身的客戶端ID不一致,確定所述單次同步操作過(guò)程中出現(xiàn)數(shù)據(jù)包異常;或者, 第二無(wú)線設(shè)備判斷在允許的時(shí)間范圍內(nèi)沒(méi)有接收到相應(yīng)的請(qǐng)求包序號(hào)下的請(qǐng)求包或 應(yīng)答包時(shí),確定所述單次同步操作過(guò)程中出現(xiàn)數(shù)據(jù)包丟失。
6. 如權(quán)利要求1-3任一項(xiàng)所述的方法,其特征在于,所述對(duì)所述單次同步操作對(duì)應(yīng)的 時(shí)間差進(jìn)行有效性過(guò)濾包括: 選取第一無(wú)線設(shè)備和第二無(wú)線設(shè)備之間數(shù)據(jù)包的平均傳輸時(shí)間的閾值; 若某單次同步操作的平均傳輸時(shí)間超過(guò)所述閾值,則過(guò)濾掉該單次同步操作的時(shí)間差 數(shù)據(jù)。
7. 如權(quán)利要求1-3任一項(xiàng)所述的方法,其特征在于,所述對(duì)設(shè)定時(shí)間段內(nèi)的多個(gè)單次 同步操作對(duì)應(yīng)的有效的時(shí)間差數(shù)據(jù)進(jìn)行平滑處理包括: 根據(jù)每個(gè)單次同步操作的同步時(shí)間和該單次同步操作對(duì)應(yīng)的時(shí)間差數(shù)據(jù),采用最小二 乘曲線擬合的方式進(jìn)行平滑處理; 或者,對(duì)設(shè)定時(shí)間段內(nèi)的多個(gè)單次同步操作對(duì)應(yīng)的有效的時(shí)間差數(shù)據(jù)求均值。
8. 如權(quán)利要求1-3任一項(xiàng)所述的方法,其特征在于,所述根據(jù)獲得的所述平均時(shí)間差 調(diào)整第二無(wú)線設(shè)備的系統(tǒng)時(shí)間包括: 使用Linux操作系統(tǒng)的時(shí)鐘調(diào)節(jié)命令adjtimex,根據(jù)獲得的所述平均時(shí)間差對(duì)第二無(wú) 線設(shè)備的系統(tǒng)時(shí)鐘或系統(tǒng)時(shí)鐘的計(jì)數(shù)器進(jìn)行調(diào)整。
9. 一種無(wú)線設(shè)備,其特征在于,包括: 單次同步計(jì)算單元,用于通過(guò)在第一無(wú)線設(shè)備和自身的單次同步操作中,獲取到的第 一無(wú)線設(shè)備和自身收發(fā)相應(yīng)數(shù)據(jù)包的時(shí)間,計(jì)算該單次同步操作對(duì)應(yīng)的自身相對(duì)于第一無(wú) 線設(shè)備的時(shí)間差; 過(guò)濾單元,用于對(duì)所述單次同步操作對(duì)應(yīng)的時(shí)間差進(jìn)行有效性過(guò)濾,提取出有效的時(shí) 間差數(shù)據(jù); 平滑單元,用于對(duì)設(shè)定時(shí)間段內(nèi)的多個(gè)單次同步操作對(duì)應(yīng)的有效的時(shí)間差數(shù)據(jù)進(jìn)行平 滑處理,獲得自身相對(duì)于所述第一無(wú)線設(shè)備在所述設(shè)定時(shí)間段內(nèi)的平均時(shí)間差; 時(shí)間調(diào)整單元,用于每隔所述設(shè)定時(shí)間段根據(jù)獲得的所述平均時(shí)間差調(diào)整自身的系統(tǒng) 時(shí)間,以使得自身與所述第一無(wú)線設(shè)備時(shí)間同步。
10. 如權(quán)利要求9所述的無(wú)線設(shè)備,其特征在于,所述單次同步計(jì)算單元包括: 請(qǐng)求接收模塊,用于接收第一無(wú)線設(shè)備以預(yù)定的時(shí)間間隔廣播或組播進(jìn)行同步的請(qǐng)求 包,所述請(qǐng)求包中攜帶請(qǐng)求包序號(hào)、發(fā)送請(qǐng)求包的本地系統(tǒng)時(shí)間TS1 ; 應(yīng)答發(fā)送模塊,用于向所述第一無(wú)線設(shè)備廣播或組播發(fā)送應(yīng)答包,所述應(yīng)答包中攜帶 自身的ID,同時(shí)記錄下所述請(qǐng)求包序號(hào)、接收到請(qǐng)求包的本地系統(tǒng)時(shí)間TC1、發(fā)送應(yīng)答包的 本地系統(tǒng)時(shí)間TC2和所述TS1 ; 回應(yīng)校驗(yàn)?zāi)K,用于根據(jù)自身所屬無(wú)線設(shè)備的客戶端ID校驗(yàn)所述第一無(wú)線設(shè)備發(fā)送 的回應(yīng)包,所述回應(yīng)包中攜帶無(wú)線設(shè)備的ID和所述第一無(wú)線設(shè)備接收到所述應(yīng)答包的本 地系統(tǒng)時(shí)間TS2,如果所述回應(yīng)包中攜帶的ID與自身所屬無(wú)線設(shè)備的客戶端ID -致,則記 錄下所述TS2 ; 同步計(jì)算模塊,用于根據(jù)同一請(qǐng)求包序號(hào)下的所述TC1、所述TC2、所述TS1和所述TS2, 計(jì)算自身所屬的無(wú)線設(shè)備相對(duì)于第一無(wú)線設(shè)備的單次同步操作的時(shí)間差; 其中,所述同步計(jì)算模塊,具體用于基于下述公式,根據(jù)所述TCI、TC2、TS1和TS2計(jì)算 第一無(wú)線設(shè)備相對(duì)于自身所屬的無(wú)線設(shè)備的單次同步操作的時(shí)間差,以及單次同步操作下 第一無(wú)線設(shè)備與自身所屬的無(wú)線設(shè)備間數(shù)據(jù)包的平均傳輸時(shí)間: Ttrans = (TC1+TS2-TS1-TC2)/2 Tdiff = (TCl-TS2-TSl+TC2)/2 其中,Tdiff為單次同步操作的時(shí)間差,Ttrans為單次同步操作的平均傳輸時(shí)間。
11. 如權(quán)利要求9-10任一項(xiàng)所述的無(wú)線設(shè)備,其特征在于, 所述過(guò)濾單元,具體用于確定某單次同步操作過(guò)程中出現(xiàn)數(shù)據(jù)包丟失或異常時(shí),則過(guò) 濾掉該單次同步操作的時(shí)間差數(shù)據(jù);以及,選取第一無(wú)線設(shè)備和自身所屬無(wú)線設(shè)備之間數(shù) 據(jù)包的平均傳輸時(shí)間的閾值,若某單次同步操作的平均傳輸時(shí)間超過(guò)所述閾值,則過(guò)濾掉 該單次同步操作的時(shí)間差數(shù)據(jù); 所述平滑單元,具體用于根據(jù)每個(gè)單次同步操作的同步時(shí)間和該單次同步操作對(duì)應(yīng)的 時(shí)間差數(shù)據(jù),采用最小二乘曲線擬合的方式進(jìn)行平滑處理;或者,對(duì)設(shè)定時(shí)間段內(nèi)的多個(gè)單 次同步操作對(duì)應(yīng)的有效的時(shí)間差數(shù)據(jù)求均值。
12. -種無(wú)線通信系統(tǒng),其特征在于,所述系統(tǒng)包括:用于提供音頻源第一無(wú)線設(shè)備、 一個(gè)或多個(gè)作為無(wú)線音箱的第二無(wú)線設(shè)備,其中第一無(wú)線設(shè)備與第二無(wú)線設(shè)備通過(guò)WIFI 或WIFI直連建立連接;所述第二無(wú)線設(shè)備為權(quán)利要求9-11任一項(xiàng)所述的無(wú)線設(shè)備。
【文檔編號(hào)】H04W56/00GK104244399SQ201410469644
【公開(kāi)日】2014年12月24日 申請(qǐng)日期:2014年9月15日 優(yōu)先權(quán)日:2014年9月15日
【發(fā)明者】高強(qiáng), 姜斌斌, 王重樂(lè), 曾小波 申請(qǐng)人:歌爾聲學(xué)股份有限公司