2013年9月13日 星期五

CSR Bluetooth 記事

請不要問我,我也在學習中.......

CSR Bluetooth 四種基本類型的位址:
(1). BD_ADDR: 藍芽設備位址.
(2). AM_ADDR:活動成員位址(Active Member) .
(3). PM_ADDR:休眠成員位址.
(4). AR_ADDR:詢問請求位址.

2013年9月9日 星期一

CSR Headset Configuration Tool-使用自訂語音提示聲音

CSR有內建語音提示聲音,當內建的提示聲音無法滿足開發者的需求時,可以自訂語音提示聲音.
CSR xIDE使用自訂語音提示聲音需要做.wav檔換成ADPCM(Adaptive DPCM).
建議轉檔的原始聲音檔為.wav, sampling rate44.1KHz.

1. 開啟Headset Configuration Tool.

2. 選擇〝Voice Prompts〞標籤欄.
(a). Voice Prompts Configuration: FileSystem.
(b). Prompts File Format: ADPCM
(c). Sample Rate(Hz): 44100
(d). 如果一次要轉換多個.wav,請點選Number of events per language= 捲軸,目前這個範例我只選擇轉一個.wav.
(e). 點選欄位增加需轉換的.wav.
(f). 最後,設定完成按下〝Create Voice Prompts〞按鍵.

將〝Do Not Play when SCO is presentv取消.
3. 按下〝確定〞開始轉檔.
4. 存檔位置選擇Projectimage路徑下,存檔的檔案名稱為0.prm,如果一次有多個檔案需要轉檔,程式會自動排列為0.prm 1.prm 2.prm…,確認完後按〝存檔〞.

5. 最後解果可以看到在Projectimage/prompts產生0.prm.

還有在image/headers路徑下,CSR程式需要讀取的0.idx設定檔.

2013年9月7日 星期六

CSR xIDE makefile的warnings參數

CSR xIDE是使用GCC編譯器,第一次使用CSR xIDE 撰寫程式時,會發現與我們所使用的其他IDE有些許不同,像是不可以使用" // "做註解,不可以在函數前直接宣告變數型態.
只要將 makefile的warnings參數取消就可以使用.
-ansi 禁止雙斜線(//)註解.

-pedantic 禁止函數在前變數型態宣告.

1. 開啟IDE下(xIDE 版本)/tools/Makefile.rules檔.
 2. 刪除"-pedantic"就可以函數前變數型態宣告,刪除"-ansi "就可以使用雙斜線(//)做註解,不過CSR xIDE不會將雙斜線(//)做註解的文子改變顏色,沒有顏色的區別,看code真的很累,看來還是乖乖使用"/* */"作註解.

CSR xIDE 前置處理器-條件式編譯設定

CSR xIDE 下提供了一些sample code, sample code的架構使用了很多 前置處理器的條件式編譯,CSR xIDE 提供了設定工具,取代了在程式中加入#define的前置處理器條件式編譯方式.

1. 選擇"Project"->Properties...
2. 使用滑鼠點選"Build System",之後再選擇"Define symbols"欄位,之後就可以設定在程式中需要編譯的部分,在參數中有小"x"代表不編譯.
3. Define symbols的參數,請參考xIDE安裝完成後的文件.
文件"ADK 2 Headset Application User Guide",的章節"3. To Set Up the xIDE Project Environment"和
"ADK 2 Audio Adaptor User Guide",的章節"3. To Set Up the xIDE Project Environment"中有說明.

2013年9月6日 星期五

C前置處理器-條件式編譯


#include <stdio.h>

int main()
{

#define A 1
#define C 1
#define E 1

#if A //true
    printf("HelloWorle-1\n");
#endif

#if B //false
    printf("HelloWorle-2\n");
#endif

#if defined(C) //true
    printf("HelloWorle-3\n");
#endif

#if defined(D) //false
    printf("HelloWorle-4\n");
#endif

#if !defined(E) //true
    printf("HelloWorle-5\n");
#endif

#if !defined(F) //false
    printf("HelloWorle-6\n");
#endif

    return 0;

}

結果:


#if  #if defined(x)  #if !defined(x) 結尾都要加上#endif,由上述的程式範例可以看到反白處都是編譯器不會被編譯到的程式碼.
當#if  #if defined(x)  #if !defined(x)的判斷式沒有被#define宣告,就為"0",反之當被#define宣告為為"1"時,編譯器就會被編譯到判斷式內的程式碼.

2013年9月4日 星期三

2013年9月2日 星期一

CSR USB-SPI Cable

以前CSR Cable是使用PC的print port,現在有USB-SPI的cable.
1. 要按Debug的Run前,要先設定"Transport".
2. 之後勾選"USB SPI (231056)" ,按"OK",這樣在按Debug的Run才不會出現找不到SPI的情形.