ex

Fork of mbed-os-example-mbed5-blinky by mbed-os-examples

Committer:
TMBOY
Date:
Tue Jul 18 16:54:45 2017 +0800
Revision:
47:9e361da97763
?

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TMBOY 47:9e361da97763 1 /** file rda58xx.h
TMBOY 47:9e361da97763 2 * Headers for interfacing with the codec chip.
TMBOY 47:9e361da97763 3 */
TMBOY 47:9e361da97763 4
TMBOY 47:9e361da97763 5 #ifndef RDA58XX_H
TMBOY 47:9e361da97763 6 #define RDA58XX_H
TMBOY 47:9e361da97763 7
TMBOY 47:9e361da97763 8 #include "mbed.h"
TMBOY 47:9e361da97763 9 #include "rda58xx_int_types.h"
TMBOY 47:9e361da97763 10 // #include "rda58xx_dbg.h"
TMBOY 47:9e361da97763 11
TMBOY 47:9e361da97763 12 typedef enum {
TMBOY 47:9e361da97763 13 MCI_TYPE_NONE=-1,
TMBOY 47:9e361da97763 14 MCI_TYPE_GSM_FR, /* 0 */
TMBOY 47:9e361da97763 15 MCI_TYPE_GSM_HR, /* 1 */
TMBOY 47:9e361da97763 16 MCI_TYPE_GSM_EFR, /* 2 */
TMBOY 47:9e361da97763 17 MCI_TYPE_AMR, /* 3 */
TMBOY 47:9e361da97763 18 MCI_TYPE_AMR_WB, /* 4 */
TMBOY 47:9e361da97763 19 MCI_TYPE_DAF, /* 5 */
TMBOY 47:9e361da97763 20 MCI_TYPE_AAC, /* 6 */
TMBOY 47:9e361da97763 21 MCI_TYPE_PCM_8K, /* 7 */
TMBOY 47:9e361da97763 22 MCI_TYPE_PCM_16K, /* 8 */
TMBOY 47:9e361da97763 23 MCI_TYPE_G711_ALAW, /* 9 */
TMBOY 47:9e361da97763 24 MCI_TYPE_G711_ULAW, /* 10 */
TMBOY 47:9e361da97763 25 MCI_TYPE_DVI_ADPCM, /* 11 */
TMBOY 47:9e361da97763 26 MCI_TYPE_VR, /* 12 */
TMBOY 47:9e361da97763 27 MCI_TYPE_WAV, /* 13 */
TMBOY 47:9e361da97763 28 MCI_TYPE_WAV_ALAW, /* 14 */
TMBOY 47:9e361da97763 29 MCI_TYPE_WAV_ULAW, /* 15 */
TMBOY 47:9e361da97763 30 MCI_TYPE_WAV_DVI_ADPCM, /* 16 */
TMBOY 47:9e361da97763 31 MCI_TYPE_SMF, /* 17 */
TMBOY 47:9e361da97763 32 MCI_TYPE_IMELODY, /* 18 */
TMBOY 47:9e361da97763 33 MCI_TYPE_SMF_SND, /* 19 */
TMBOY 47:9e361da97763 34 MCI_TYPE_MMF, /* 20 */
TMBOY 47:9e361da97763 35 MCI_TYPE_AU, /* 21 */
TMBOY 47:9e361da97763 36 MCI_TYPE_AIFF, /* 22 */
TMBOY 47:9e361da97763 37 MCI_TYPE_M4A, /* 23 */
TMBOY 47:9e361da97763 38 MCI_TYPE_3GP, /* 24 */
TMBOY 47:9e361da97763 39 MCI_TYPE_MP4, /* 25 */
TMBOY 47:9e361da97763 40 MCI_TYPE_JPG, /* 26 */
TMBOY 47:9e361da97763 41 MCI_TYPE_GIF, /* 27 */
TMBOY 47:9e361da97763 42 MCI_TYPE_MJPG, /* 28 */
TMBOY 47:9e361da97763 43 MCI_TYPE_WMA, /* 29 */
TMBOY 47:9e361da97763 44 MCI_TYPE_MIDI, /* 30 */
TMBOY 47:9e361da97763 45 MCI_TYPE_RM, /* 31 */
TMBOY 47:9e361da97763 46 //MCI_TYPE_AVSTRM, /* 32 */
TMBOY 47:9e361da97763 47 MCI_TYPE_SBC, /* 32 */
TMBOY 47:9e361da97763 48 MCI_TYPE_SCO, /* 33 */
TMBOY 47:9e361da97763 49 MCI_TYPE_TONE, /* 34 */
TMBOY 47:9e361da97763 50 MCI_TYPE_USB, /* 35 */
TMBOY 47:9e361da97763 51 MCI_TYPE_LINEIN, /* 36 */
TMBOY 47:9e361da97763 52 MCI_NO_OF_TYPE
TMBOY 47:9e361da97763 53 } mci_type_enum;
TMBOY 47:9e361da97763 54
TMBOY 47:9e361da97763 55 typedef enum {
TMBOY 47:9e361da97763 56 UNREADY = -1,
TMBOY 47:9e361da97763 57 STOP = 0,
TMBOY 47:9e361da97763 58 PLAY,
TMBOY 47:9e361da97763 59 PAUSE,
TMBOY 47:9e361da97763 60 RECORDING,
TMBOY 47:9e361da97763 61 STOP_RECORDING,
TMBOY 47:9e361da97763 62 MODE_SWITCHING
TMBOY 47:9e361da97763 63 } rda58xx_status;
TMBOY 47:9e361da97763 64
TMBOY 47:9e361da97763 65 typedef enum {
TMBOY 47:9e361da97763 66 EMPTY = 0,
TMBOY 47:9e361da97763 67 FULL
TMBOY 47:9e361da97763 68 } rda58xx_buffer_status;
TMBOY 47:9e361da97763 69
TMBOY 47:9e361da97763 70 typedef enum {
TMBOY 47:9e361da97763 71 WITHOUT_ENDING = 0,
TMBOY 47:9e361da97763 72 WITH_ENDING
TMBOY 47:9e361da97763 73 } rda58xx_stop_type;
TMBOY 47:9e361da97763 74
TMBOY 47:9e361da97763 75 typedef enum {
TMBOY 47:9e361da97763 76 NACK = 0, //No ACK
TMBOY 47:9e361da97763 77 IACK, //Invalid ACK
TMBOY 47:9e361da97763 78 VACK //Valid ACK
TMBOY 47:9e361da97763 79 } rda58xx_at_status;
TMBOY 47:9e361da97763 80
TMBOY 47:9e361da97763 81 typedef enum {
TMBOY 47:9e361da97763 82 FT_DISABLE = 0,
TMBOY 47:9e361da97763 83 FT_ENABLE
TMBOY 47:9e361da97763 84 } rda58xx_ft_test;
TMBOY 47:9e361da97763 85
TMBOY 47:9e361da97763 86 typedef enum {
TMBOY 47:9e361da97763 87 UART_MODE = 0,
TMBOY 47:9e361da97763 88 BT_MODE
TMBOY 47:9e361da97763 89 } rda58xx_mode;
TMBOY 47:9e361da97763 90
TMBOY 47:9e361da97763 91 typedef struct {
TMBOY 47:9e361da97763 92 uint8_t *buffer;
TMBOY 47:9e361da97763 93 uint8_t bufferSize;
TMBOY 47:9e361da97763 94 rda58xx_status status;
TMBOY 47:9e361da97763 95 int value;
TMBOY 47:9e361da97763 96 } rda58xx_parameter;
TMBOY 47:9e361da97763 97
TMBOY 47:9e361da97763 98 class rda58xx
TMBOY 47:9e361da97763 99 {
TMBOY 47:9e361da97763 100 public:
TMBOY 47:9e361da97763 101 rda58xx(PinName TX, PinName RX, PinName HRESET);
TMBOY 47:9e361da97763 102 ~rda58xx(void);
TMBOY 47:9e361da97763 103 void hardReset(void);
TMBOY 47:9e361da97763 104 rda58xx_at_status bufferReq(mci_type_enum ftype, uint16_t size, uint16_t threshold);
TMBOY 47:9e361da97763 105 rda58xx_at_status stopPlay(void);
TMBOY 47:9e361da97763 106 rda58xx_at_status stopPlay(rda58xx_stop_type stype);
TMBOY 47:9e361da97763 107 rda58xx_at_status pause(void);
TMBOY 47:9e361da97763 108 rda58xx_at_status resume(void);
TMBOY 47:9e361da97763 109 rda58xx_at_status startRecord(mci_type_enum ftype, uint16_t size);
TMBOY 47:9e361da97763 110 rda58xx_at_status stopRecord(void);
TMBOY 47:9e361da97763 111 rda58xx_at_status setMicGain(uint8_t gain);
TMBOY 47:9e361da97763 112 rda58xx_at_status volAdd(void);
TMBOY 47:9e361da97763 113 rda58xx_at_status volSub(void);
TMBOY 47:9e361da97763 114 rda58xx_at_status volSet(uint8_t vol);
TMBOY 47:9e361da97763 115 rda58xx_at_status sendRawData(uint8_t *databuf, uint16_t n);
TMBOY 47:9e361da97763 116 void setBaudrate(int32_t baud);
TMBOY 47:9e361da97763 117 void setStatus(rda58xx_status status);
TMBOY 47:9e361da97763 118 rda58xx_status getStatus(void);
TMBOY 47:9e361da97763 119 void clearBufferStatus(void);
TMBOY 47:9e361da97763 120 rda58xx_buffer_status getBufferStatus(void);
TMBOY 47:9e361da97763 121 uint8_t *getBufferAddr(void);
TMBOY 47:9e361da97763 122 void setBufferSize(uint32_t size);
TMBOY 47:9e361da97763 123 uint32_t getBufferSize(void);
TMBOY 47:9e361da97763 124 rda58xx_at_status factoryTest(rda58xx_ft_test mode);
TMBOY 47:9e361da97763 125 rda58xx_at_status getCodecStatus(rda58xx_status *status);
TMBOY 47:9e361da97763 126 rda58xx_at_status getChipVersion(char *version);
TMBOY 47:9e361da97763 127 rda58xx_at_status getBtRssi(int8_t *RSSI);
TMBOY 47:9e361da97763 128 rda58xx_at_status setMode(rda58xx_mode mode);
TMBOY 47:9e361da97763 129 rda58xx_mode getMode(void);
TMBOY 47:9e361da97763 130 rda58xx_at_status setBtBrMode(void);
TMBOY 47:9e361da97763 131 rda58xx_at_status setBtLeMode(void);
TMBOY 47:9e361da97763 132 rda58xx_at_status lesWifiScs(void);
TMBOY 47:9e361da97763 133 rda58xx_at_status getApSsid(char *SSID);
TMBOY 47:9e361da97763 134 rda58xx_at_status getApPwd(char *PWD);
TMBOY 47:9e361da97763 135 bool isReady(void);
TMBOY 47:9e361da97763 136 bool isPowerOn(void);
TMBOY 47:9e361da97763 137 int32_t (*atHandler) (int32_t status);
TMBOY 47:9e361da97763 138 int32_t setAtHandler(int32_t (*handler)(int32_t status));
TMBOY 47:9e361da97763 139 void rx_handler(void);
TMBOY 47:9e361da97763 140 void tx_handler(void);
TMBOY 47:9e361da97763 141 private:
TMBOY 47:9e361da97763 142 RawSerial _serial;
TMBOY 47:9e361da97763 143 int32_t _baud;
TMBOY 47:9e361da97763 144 Semaphore _rxsem;
TMBOY 47:9e361da97763 145 Semaphore _bufsem;
TMBOY 47:9e361da97763 146 volatile bool _bufflag;
TMBOY 47:9e361da97763 147 DigitalOut _HRESET;
TMBOY 47:9e361da97763 148 volatile rda58xx_mode _mode;
TMBOY 47:9e361da97763 149 volatile rda58xx_status _status;
TMBOY 47:9e361da97763 150 volatile rda58xx_buffer_status _rx_buffer_status;
TMBOY 47:9e361da97763 151 uint32_t _rx_buffer_size;
TMBOY 47:9e361da97763 152 uint32_t _tx_buffer_size;
TMBOY 47:9e361da97763 153 uint32_t _rx_idx;
TMBOY 47:9e361da97763 154 uint32_t _tx_idx;
TMBOY 47:9e361da97763 155 uint8_t *_rx_buffer;
TMBOY 47:9e361da97763 156 uint8_t *_tx_buffer;
TMBOY 47:9e361da97763 157 rda58xx_parameter _parameter;
TMBOY 47:9e361da97763 158 volatile bool _with_parameter;
TMBOY 47:9e361da97763 159 volatile rda58xx_at_status _at_status;
TMBOY 47:9e361da97763 160 volatile bool _ready;
TMBOY 47:9e361da97763 161 volatile bool _power_on;
TMBOY 47:9e361da97763 162 uint32_t _ats;
TMBOY 47:9e361da97763 163 uint32_t _atr;
TMBOY 47:9e361da97763 164 };
TMBOY 47:9e361da97763 165
TMBOY 47:9e361da97763 166 #endif
TMBOY 47:9e361da97763 167