ex
Fork of mbed-os-example-mbed5-blinky by
DuerOS-Light-SDK-v1.1.0/duer-os-light/external/targets_ext/TARGET_UNO_91H/rda58xx/rda58xx.h@47:9e361da97763, 2017-07-18 (annotated)
- Committer:
- TMBOY
- Date:
- Tue Jul 18 16:54:45 2017 +0800
- Revision:
- 47:9e361da97763
?
Who changed what in which revision?
| User | Revision | Line number | New 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 |
