├── CONTRIBUTING.md ├── README.md ├── _config.yml ├── _includes ├── libinstalling.html ├── video01.html └── video02.html ├── examples ├── .DS_Store ├── BK1088_00_SERIAL_MONITOR │ ├── POC_01_CIRCUIT_TEST │ │ └── POC_01_CIRCUIT_TEST.ino │ ├── POC_02_AM_FM │ │ └── POC_02_AM_FM.ino │ ├── POC_02_AM_FM_REF_CLK │ │ └── POC_02_AM_FM_REF_CLK.ino │ ├── POC_03_SW │ │ └── POC_03_SW.ino │ ├── POC_04_RDS │ │ └── POC_04_RDS.ino │ └── README.md ├── BK1088_02_TFT_DISPLAY │ ├── POC_01_ST7735 │ │ ├── DSEG7_Classic_Mini_Regular_30.h │ │ ├── POC_01_ST7735.ino │ │ ├── Rotary.cpp │ │ ├── Rotary.h │ │ ├── Serif_plain_14.h │ │ └── Serif_plain_7.h │ └── README.md ├── BK1088_03_LCD16X02_ESP32 │ ├── BK1088_03_LCD16X02_ESP32.ino │ ├── Rotary.cpp │ └── Rotary.h ├── BK1088_04_NOKIA5110_RDS_NANO │ ├── BK1088_04_NOKIA5110_RDS_NANO.ino │ ├── Rotary.cpp │ ├── Rotary.h │ └── user_manual.txt ├── Lilygo_t_embed │ ├── README.md │ ├── examples │ │ └── ALL_IN_ONE_T_Embed │ │ │ ├── ALL_IN_ONE_T_Embed.ino │ │ │ ├── README.md │ │ │ ├── Rotary.cpp │ │ │ ├── Rotary.h │ │ │ └── user_manual.txt │ └── images │ │ ├── ESP32_S.png │ │ ├── lib00.png │ │ ├── lib00A.png │ │ ├── lib01.png │ │ ├── lib02.png │ │ ├── lib04.png │ │ ├── lib05.png │ │ ├── lily01.jpg │ │ ├── lily02.jpg │ │ └── t_embed.png ├── README.md ├── UNDER_CONSTRUCTION │ ├── BK1088_05_OLED │ │ ├── BK1088_05_OLED.ino │ │ ├── Rotary.cpp │ │ └── Rotary.h │ └── BK1088_07_RDS_TFT_TOUCH_SHIELD │ │ ├── BK1088_07_RDS_TFT_TOUCH_SHIELD.ino │ │ ├── Rotary.cpp │ │ └── Rotary.h ├── compile_all.sh └── config_libraries_and_boards.sh ├── extras ├── docs │ ├── Commun questions extracted from Beken.docx │ ├── README.md │ └── html │ │ ├── _b_k108_x_8cpp.html │ │ ├── _b_k108_x_8cpp_source.html │ │ ├── _b_k108_x_8h.html │ │ ├── _b_k108_x_8h.js │ │ ├── _b_k108_x_8h_source.html │ │ ├── annotated.html │ │ ├── annotated_dup.js │ │ ├── bc_s.png │ │ ├── bc_sd.png │ │ ├── bdwn.png │ │ ├── classes.html │ │ ├── closed.png │ │ ├── dir_22ccd63b32a12b0c19294f50e69a6f91.html │ │ ├── dir_22ccd63b32a12b0c19294f50e69a6f91.js │ │ ├── dir_4d05ee8c91c3ddb199e26821c70d0061.html │ │ ├── dir_4d05ee8c91c3ddb199e26821c70d0061.js │ │ ├── doc.png │ │ ├── docd.png │ │ ├── doxygen.css │ │ ├── doxygen.svg │ │ ├── dynsections.js │ │ ├── files.html │ │ ├── files_dup.js │ │ ├── folderclosed.png │ │ ├── folderopen.png │ │ ├── functions.html │ │ ├── functions_func.html │ │ ├── functions_vars.html │ │ ├── globals.html │ │ ├── globals_defs.html │ │ ├── globals_type.html │ │ ├── group___g_a01.html │ │ ├── group___g_a01.js │ │ ├── group___g_a01_class_b_k108_x.js │ │ ├── group___g_a01_structbk__rds__blockb_8group0.js │ │ ├── group___g_a01_structbk__rds__blockb_8group2.js │ │ ├── group___g_a01_structbk__rds__blockb_8refined.js │ │ ├── group___g_a01_structbk__rds__date__time_8refined.js │ │ ├── group___g_a01_structbk__reg00_8refined.js │ │ ├── group___g_a01_structbk__reg01_8refined.js │ │ ├── group___g_a01_structbk__reg02_8refined.js │ │ ├── group___g_a01_structbk__reg03_8refined.js │ │ ├── group___g_a01_structbk__reg04_8refined.js │ │ ├── group___g_a01_structbk__reg05_8refined.js │ │ ├── group___g_a01_structbk__reg06_8refined.js │ │ ├── group___g_a01_structbk__reg07_8refined.js │ │ ├── group___g_a01_structbk__reg08_8refined.js │ │ ├── group___g_a01_structbk__reg09_8refined.js │ │ ├── group___g_a01_structbk__reg0a_8refined.js │ │ ├── group___g_a01_structbk__reg0b_8refined.js │ │ ├── group___g_a01_structbk__reg0c_8rds__status.js │ │ ├── group___g_a01_structbk__reg0c_8refined.js │ │ ├── group___g_a01_structbk__reg0d_8refined.js │ │ ├── group___g_a01_structbk__reg0e_8refined.js │ │ ├── group___g_a01_structbk__reg0f_8refined.js │ │ ├── group___g_a01_structbk__reg10_8refined.js │ │ ├── group___g_a01_structbk__reg11_8refined.js │ │ ├── group___g_a01_structbk__reg12_8refined.js │ │ ├── group___g_a01_structbk__reg13_8refined.js │ │ ├── group___g_a01_structbk__reg14_8refined.js │ │ ├── group___g_a01_structbk__reg15_8refined.js │ │ ├── group___g_a01_structbk__reg16_8refined.js │ │ ├── group___g_a01_structbk__reg17_8refined.js │ │ ├── group___g_a01_structbk__reg18_8refined.js │ │ ├── group___g_a01_structbk__reg19_8refined.js │ │ ├── group___g_a01_structbk__reg1_a_8refined.js │ │ ├── group___g_a01_structbk__reg1_b_8refined.js │ │ ├── group___g_a01_structbk__reg1_c_8refined.js │ │ ├── group___g_a01_structbk__reg1_d_8refined.js │ │ ├── group___g_a01_structword16__to__bytes_8refined.js │ │ ├── group___g_a01_unionbk__rds__blockb.js │ │ ├── group___g_a01_unionbk__rds__date__time.js │ │ ├── group___g_a01_unionbk__reg00.js │ │ ├── group___g_a01_unionbk__reg01.js │ │ ├── group___g_a01_unionbk__reg02.js │ │ ├── group___g_a01_unionbk__reg03.js │ │ ├── group___g_a01_unionbk__reg04.js │ │ ├── group___g_a01_unionbk__reg05.js │ │ ├── group___g_a01_unionbk__reg06.js │ │ ├── group___g_a01_unionbk__reg07.js │ │ ├── group___g_a01_unionbk__reg08.js │ │ ├── group___g_a01_unionbk__reg09.js │ │ ├── group___g_a01_unionbk__reg0a.js │ │ ├── group___g_a01_unionbk__reg0b.js │ │ ├── group___g_a01_unionbk__reg0c.js │ │ ├── group___g_a01_unionbk__reg0d.js │ │ ├── group___g_a01_unionbk__reg0e.js │ │ ├── group___g_a01_unionbk__reg0f.js │ │ ├── group___g_a01_unionbk__reg10.js │ │ ├── group___g_a01_unionbk__reg11.js │ │ ├── group___g_a01_unionbk__reg12.js │ │ ├── group___g_a01_unionbk__reg13.js │ │ ├── group___g_a01_unionbk__reg14.js │ │ ├── group___g_a01_unionbk__reg15.js │ │ ├── group___g_a01_unionbk__reg16.js │ │ ├── group___g_a01_unionbk__reg17.js │ │ ├── group___g_a01_unionbk__reg18.js │ │ ├── group___g_a01_unionbk__reg19.js │ │ ├── group___g_a01_unionbk__reg1_a.js │ │ ├── group___g_a01_unionbk__reg1_b.js │ │ ├── group___g_a01_unionbk__reg1_c.js │ │ ├── group___g_a01_unionbk__reg1_d.js │ │ ├── group___g_a01_unionword16__to__bytes.js │ │ ├── group___g_a02.html │ │ ├── group___g_a02.js │ │ ├── group___g_a03.html │ │ ├── group___g_a03.js │ │ ├── group___g_a04.html │ │ ├── group___g_a04.js │ │ ├── group___g_a05.html │ │ ├── group___g_a05.js │ │ ├── index.html │ │ ├── jquery.js │ │ ├── logo.png │ │ ├── menu.js │ │ ├── menudata.js │ │ ├── modules.html │ │ ├── modules.js │ │ ├── nav_f.png │ │ ├── nav_fd.png │ │ ├── nav_g.png │ │ ├── nav_h.png │ │ ├── nav_hd.png │ │ ├── navtree.css │ │ ├── navtree.js │ │ ├── navtreedata.js │ │ ├── navtreeindex0.js │ │ ├── navtreeindex1.js │ │ ├── open.png │ │ ├── pages.html │ │ ├── resize.js │ │ ├── search │ │ ├── all_0.js │ │ ├── all_1.js │ │ ├── all_2.js │ │ ├── all_3.js │ │ ├── all_4.js │ │ ├── all_5.js │ │ ├── all_6.js │ │ ├── all_7.js │ │ ├── all_8.js │ │ ├── all_9.js │ │ ├── all_a.js │ │ ├── all_b.js │ │ ├── all_c.js │ │ ├── all_d.js │ │ ├── all_e.js │ │ ├── classes_0.js │ │ ├── classes_1.js │ │ ├── close.svg │ │ ├── defines_0.js │ │ ├── defines_1.js │ │ ├── defines_2.js │ │ ├── defines_3.js │ │ ├── defines_4.js │ │ ├── defines_5.js │ │ ├── defines_6.js │ │ ├── defines_7.js │ │ ├── files_0.js │ │ ├── functions_0.js │ │ ├── functions_1.js │ │ ├── functions_2.js │ │ ├── functions_3.js │ │ ├── functions_4.js │ │ ├── functions_5.js │ │ ├── functions_6.js │ │ ├── functions_7.js │ │ ├── functions_8.js │ │ ├── groups_0.js │ │ ├── groups_1.js │ │ ├── groups_2.js │ │ ├── groups_3.js │ │ ├── mag.svg │ │ ├── mag_d.svg │ │ ├── mag_sel.svg │ │ ├── mag_seld.svg │ │ ├── pages_0.js │ │ ├── pages_1.js │ │ ├── search.css │ │ ├── search.js │ │ ├── searchdata.js │ │ ├── typedefs_0.js │ │ ├── variables_0.js │ │ ├── variables_1.js │ │ ├── variables_2.js │ │ ├── variables_3.js │ │ ├── variables_4.js │ │ ├── variables_5.js │ │ ├── variables_6.js │ │ └── variables_7.js │ │ ├── splitbar.png │ │ ├── splitbard.png │ │ ├── sync_off.png │ │ ├── sync_on.png │ │ ├── tab_a.png │ │ ├── tab_ad.png │ │ ├── tab_b.png │ │ ├── tab_bd.png │ │ ├── tab_h.png │ │ ├── tab_hd.png │ │ ├── tab_s.png │ │ ├── tab_sd.png │ │ ├── tabs.css │ │ └── todo.html ├── images │ ├── .DS_Store │ ├── BK1088E_01.jpg │ ├── BK1088_pinout.png │ ├── UNO_SHIELD_01.jpg │ ├── UNO_SHIELD_02.jpg │ ├── UNO_SHIELD_03.jpg │ ├── UNO_SHIELD_04.jpg │ ├── UNO_SHIELD_05.jpg │ ├── UNO_SHIELD_07.jpg │ ├── UNO_SHIELD_08.jpg │ ├── basic_circuit_from_beken.png │ ├── basic_schematic.png │ ├── bk1088_functional_block_diagram.png │ ├── logo.png │ ├── photo_A01.png │ ├── photo_A02.png │ ├── photo_A03.png │ ├── photo_B01.png │ ├── photo_B02.png │ ├── photo_B03.png │ ├── prototype_01.jpg │ ├── prototype_02.jpg │ ├── schematic_esp32_lcd16x2.png │ ├── schematic_pro_mini_TFT.png │ └── under_construction.png └── schematic │ ├── LCD16x02_ENCODER_ESP32_CIRCUIT.sch │ ├── TFT_ENCODER_PRO_MINI.sch │ └── basic_circuit.sch ├── keywords.txt ├── library.properties ├── license.txt └── src ├── BK108X.cpp └── BK108X.h /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Your support is important. 2 | 3 | If you would like to support this library development, consider joining this project via Github. Alternatively, make suggestions on new features and report errors if you find them. Thank you! 4 | 5 | Be a member of Facebook group [DSP receivers for hobbyists](https://www.facebook.com/groups/2655942598067211) 6 | 7 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-cayman -------------------------------------------------------------------------------- /_includes/libinstalling.html: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /_includes/video01.html: -------------------------------------------------------------------------------- 1 |
2 |

Presentation videos

3 | 5 | 6 |
7 | 8 | 10 | 11 |
12 | 13 | 15 | 16 | -------------------------------------------------------------------------------- /_includes/video02.html: -------------------------------------------------------------------------------- 1 |
2 |

All Band receiver with BK1088E and LilyGo panel

3 | 5 | 6 |
7 | -------------------------------------------------------------------------------- /examples/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/examples/.DS_Store -------------------------------------------------------------------------------- /examples/BK1088_00_SERIAL_MONITOR/POC_01_CIRCUIT_TEST/POC_01_CIRCUIT_TEST.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #define SDA_PIN A4 5 | #define CLK_PIN A5 6 | 7 | 8 | #define STRONG_LOCAL_FM_STATION 10650 // Set the best FM frequency to your location. The current is 106.50MHz 9 | #define STRONG_LOCAL_AM_STATION 620 // Set the best AM freqiency to your location. The current is 620KHz 10 | 11 | BK108X rx; 12 | 13 | char bufferAux[160]; 14 | 15 | 16 | void setup() 17 | { 18 | 19 | Serial.begin(9600); 20 | while (!Serial); 21 | /* 22 | uint8_t i2cBusList[15]; 23 | int i2cStatus; 24 | 25 | i2cStatus = rx.checkI2C(i2cBusList); 26 | 27 | if (i2cStatus == -1) 28 | showMsgHalt(F("\nError while try to access the device.\n")); 29 | else if (i2cStatus == 0) 30 | showMsgHalt(F("\nNo device was detected. Please, check your circuit!")); 31 | else { 32 | for (int i = 0; i < i2cStatus ; i++) { 33 | sprintf(bufferAux,"Found I2C adress: %X (HEX)\n", i2cBusList[i]); 34 | Serial.print(bufferAux); 35 | } 36 | } */ 37 | 38 | Serial.println("\n********Begin!"); 39 | 40 | delay(1000); 41 | 42 | Serial.println("\nStarting the receiver!"); 43 | 44 | rx.setup(SDA_PIN, CLK_PIN); 45 | 46 | showRegisters(); 47 | 48 | Serial.println("\nReceiver started!"); 49 | 50 | getDeviceInfo(); 51 | 52 | rx.setVolume(20); 53 | 54 | Serial.print("\nChecking an AM station in your location at "); 55 | Serial.print(STRONG_LOCAL_AM_STATION); 56 | Serial.print("KHZ\n\n"); 57 | rx.setAM(520, 1700, STRONG_LOCAL_AM_STATION, 10); 58 | delay(10000); 59 | 60 | Serial.print("\nChecking an FM station in your location at "); 61 | Serial.print(STRONG_LOCAL_FM_STATION / 100.0); 62 | Serial.print("MHZ\n\n"); 63 | rx.setFM(6400, 10800, STRONG_LOCAL_FM_STATION, 100); 64 | delay(10000); 65 | rx.setFrequency(10390); 66 | 67 | Serial.println("\nFinish!***********"); 68 | 69 | } 70 | 71 | void showRegisters() { 72 | 73 | uint16_t *regContent; 74 | uint8_t reg; 75 | uint16_t aux; 76 | char bufferAux[60]; 77 | Serial.println("\n***Register values***** \n"); 78 | regContent = rx.getRegisterValues(); 79 | for ( reg = 0; reg < 32; reg++) { 80 | aux = regContent[reg]; 81 | sprintf(bufferAux,"Reg %d: %x (%u)", reg, aux, aux ); 82 | Serial.println(bufferAux); 83 | } 84 | 85 | } 86 | 87 | 88 | void loop() 89 | { 90 | 91 | } 92 | 93 | 94 | void showMsgHalt(String msg) { 95 | Serial.print(F("\n********************\n")); 96 | Serial.print(msg); 97 | Serial.print(F("\n********************\n")); 98 | while(1); 99 | } 100 | 101 | void getDeviceInfo() { 102 | 103 | char aux[100]; 104 | uint16_t deviceId = rx.getDeviceId(); 105 | uint16_t chipId = rx.getChipId(); 106 | 107 | if ( (chipId ==0 || chipId == 0xFFFF) || ( deviceId == 0 || deviceId == 0xFFFF ) ) { 108 | Serial.println("The device may not have been successfully detected. Please, check it."); 109 | } 110 | 111 | // If you are using BK1088E, the Chip ID should be 4224 (0x1080) 112 | sprintf(aux, "Device Id = %u; Chip Id = %u", deviceId, chipId); 113 | Serial.println(aux); 114 | 115 | } 116 | 117 | 118 | 119 | 120 | 121 | 122 | -------------------------------------------------------------------------------- /examples/BK1088_00_SERIAL_MONITOR/POC_02_AM_FM_REF_CLK/POC_02_AM_FM_REF_CLK.ino: -------------------------------------------------------------------------------- 1 | /* 2 | Test and validation of the PU2CLR BK108X Arduino Library. 3 | It is a FM, MW (520 to 1710Khz) and SW 2.1 to 21.8MHz 4 | 5 | ATTENTION: Please, avoid using the computer connected to the mains during testing. 6 | 7 | The main advantages of using this sketch are: 8 | 1) It is a easy way to check if your circuit is working; 9 | 2) You do not need to connect any display device to make your radio works; 10 | 3) You do not need connect any push buttons or encoders to change volume and frequency; 11 | 4) The Arduino IDE is all you need to control the radio. 12 | 13 | This sketch has been successfully tested on: 14 | 1) Pro Mini 3.3V; 15 | 2) UNO (by using a voltage converter); 16 | 17 | BK1088 and Arduino Pro Mini wire up 18 | 19 | | BK1088 pin | Arduino pin | Description | 20 | | ----------- | ----------- | ----------- | 21 | | CLK (pin 7) | A5 | | 22 | | SDA (pin 8) | A4 | | 23 | 24 | 25 | I strongly recommend starting with this sketch. 26 | 27 | See schematic: https://pu2clr.github.io/BK108X/ 28 | 29 | PU2CLR BK108X API documentation: https://pu2clr.github.io/BK108X/extras/docs/html/index.html 30 | 31 | By Ricardo Lima Caratti, 2020. 32 | */ 33 | 34 | #include 35 | 36 | #define SDA_PIN A4 37 | #define CLK_PIN A5 38 | 39 | uint16_t currentFrequency; 40 | 41 | 42 | long elapsedTime = millis(); 43 | 44 | uint16_t rssi, lastRssi; 45 | uint16_t snr, lastSnr; 46 | uint8_t stereo, lastStereo; 47 | 48 | BK108X radio; 49 | 50 | void setup() { 51 | 52 | Serial.begin(9600); 53 | while(!Serial); 54 | 55 | radio.setup(SDA_PIN, CLK_PIN); 56 | // radio.setup(SDA_PIN, CLK_PIN, OSCILLATOR_TYPE_REFCLK, 12000000); // 12MHz external clock oscillator 57 | // radio.setup(SDA_PIN, CLK_PIN, OSCILLATOR_TYPE_CRYSTAL, 32768000); // 32.768 MHz external, crystal 58 | // radio.setup(SDA_PIN, CLK_PIN, OSCILLATOR_TYPE_CRYSTAL, 32768); // 59 | 60 | delay(100); 61 | radio.setVolume(28); 62 | 63 | currentFrequency = 9470; 64 | radio.setFM(8400, 10800, currentFrequency, 10); 65 | 66 | showHelp(); 67 | showStatus(); 68 | 69 | lastRssi = rssi = radio.getRssi(); 70 | lastSnr = snr = radio.getSnr(); 71 | lastStereo = stereo = radio.isStereo(); 72 | } 73 | 74 | 75 | void showHelp() 76 | { 77 | Serial.print("\nEXT. REF CLOCK TEST. \nCommands\n"); 78 | Serial.println("=================================================="); 79 | Serial.println("Type F to FM; A to MW"); 80 | Serial.println("Type U to increase and D to decrease the frequency"); 81 | Serial.println("Type S or s to seek station Up or Down"); 82 | Serial.println("Type + or - to volume Up or Down"); 83 | Serial.println("Type 0 to show current status"); 84 | Serial.println("Type ? to this help."); 85 | Serial.println("=================================================="); 86 | delay(1000); 87 | } 88 | 89 | // Show current frequency 90 | void showStatus() 91 | { 92 | 93 | float freq; 94 | char *unt; 95 | 96 | currentFrequency = radio.getFrequency(); 97 | 98 | if ( radio.getCurrentMode() == BK_MODE_FM ) { 99 | freq = currentFrequency / 100.0; 100 | unt = (char *) "MHz"; 101 | } else { 102 | freq = currentFrequency / 1.0; 103 | unt = (char *) "KHz"; 104 | } 105 | 106 | Serial.print("\nYou are tuned on "); 107 | Serial.print(freq); 108 | Serial.print(unt); 109 | Serial.print(" | RSSI: "); 110 | Serial.print(rssi); 111 | Serial.print("| SNR: "); 112 | Serial.print(snr); 113 | Serial.print("| V - Volume: "); 114 | Serial.print(radio.getVolume()); 115 | Serial.print(" | Stereo: "); 116 | Serial.print(stereo); 117 | Serial.print(" | RDS: "); 118 | Serial.print(radio.getRdsReady()); 119 | 120 | 121 | } 122 | 123 | void loop() 124 | { 125 | 126 | if (Serial.available() > 0) 127 | { 128 | char key = Serial.read(); 129 | switch (key) 130 | { 131 | case '+': 132 | radio.setVolumeUp(); 133 | break; 134 | case '-': 135 | radio.setVolumeDown(); 136 | break; 137 | case 'a': 138 | case 'A': 139 | radio.setAM(550, 1710, 810, 10); 140 | break; 141 | case 'f': 142 | case 'F': 143 | radio.setFM(8700, 10800, 10390, 10); 144 | radio.setMono(false); 145 | radio.setRds(true); 146 | break; 147 | case 'U': 148 | case 'u': 149 | radio.setFrequencyUp(); 150 | break; 151 | case 'D': 152 | case 'd': 153 | radio.setFrequencyDown(); 154 | break; 155 | case 'S': 156 | radio.seek(0,1, showStatus); 157 | break; 158 | case 's': 159 | radio.seek(0,0, showStatus); 160 | break; 161 | case '0': 162 | showStatus(); 163 | break; 164 | case '?': 165 | showHelp(); 166 | break; 167 | default: 168 | break; 169 | } 170 | delay(100); 171 | showStatus(); 172 | } 173 | if ( (millis() - elapsedTime) > 2000) { 174 | rssi = radio.getRssi(); 175 | snr = radio.getSnr(); 176 | 177 | if ( (lastRssi != rssi) || (lastSnr != snr) || (lastStereo != stereo) ) { 178 | showStatus(); 179 | lastRssi = rssi; lastSnr = snr; lastStereo = stereo; 180 | } 181 | 182 | elapsedTime = millis(); 183 | } 184 | } 185 | -------------------------------------------------------------------------------- /examples/BK1088_00_SERIAL_MONITOR/POC_03_SW/POC_03_SW.ino: -------------------------------------------------------------------------------- 1 | /* 2 | Test and validation of the PU2CLR BK108X Arduino Library. 3 | It is a FM, MW (520 to 1710Khz) and SW 2.1 to 21.8MHz 4 | 5 | ATTENTION: Please, avoid using the computer connected to the mains during testing. 6 | 7 | The main advantages of using this sketch are: 8 | 1) It is a easy way to check if your circuit is working; 9 | 2) You do not need to connect any display device to make your radio works; 10 | 3) You do not need connect any push buttons or encoders to change volume and frequency; 11 | 4) The Arduino IDE is all you need to control the radio. 12 | 13 | This sketch has been successfully tested on: 14 | 1) Pro Mini 3.3V; 15 | 2) UNO (by using a voltage converter); 16 | 17 | BK1088 and Arduino Pro Mini wire up 18 | 19 | | BK1088 pin | Arduino pin | Description | 20 | | ----------- | ----------- | ----------- | 21 | | CLK (pin 7) | A5 | | 22 | | SDA (pin 8) | A4 | | 23 | 24 | 25 | I strongly recommend starting with this sketch. 26 | 27 | See schematic: https://pu2clr.github.io/BK108X/ 28 | 29 | PU2CLR BK108X API documentation: https://pu2clr.github.io/BK108X/extras/docs/html/index.html 30 | 31 | By Ricardo Lima Caratti, 2020. 32 | */ 33 | 34 | #include 35 | 36 | #define SDA_PIN A4 37 | #define CLK_PIN A5 38 | 39 | 40 | uint16_t currentFrequency =7200; 41 | 42 | 43 | long elapsedTime = millis(); 44 | 45 | uint16_t rssi, lastRssi; 46 | uint16_t snr, lastSnr; 47 | 48 | BK108X radio; 49 | 50 | void setup() { 51 | 52 | Serial.begin(9600); 53 | while(!Serial); 54 | 55 | radio.setup(SDA_PIN, CLK_PIN); 56 | radio.setVolume(20); 57 | 58 | radio.setAM(7200, 7450, currentFrequency, 5); 59 | showHelp(); 60 | showStatus(); 61 | 62 | lastRssi = rssi = radio.getRssi(); 63 | lastSnr = snr = radio.getSnr(); 64 | } 65 | 66 | 67 | void showHelp() 68 | { 69 | Serial.print("\nCommands\n"); 70 | Serial.println("=================================================="); 71 | Serial.println("Type 1 to SW1; 2 to SW2; 3 to SW3; 4 to SW4 and 5 to SW5"); 72 | Serial.println("Type U to increase and D to decrease the frequency"); 73 | Serial.println("Type S or s to seek station Up or Down"); 74 | Serial.println("Type + or - to volume Up or Down"); 75 | Serial.println("Type 0 to show current status"); 76 | Serial.println("Type ? to this help."); 77 | Serial.println("=================================================="); 78 | delay(1000); 79 | } 80 | 81 | // Show current frequency 82 | void showStatus() 83 | { 84 | 85 | float freq; 86 | 87 | currentFrequency = radio.getFrequency(); 88 | 89 | freq = currentFrequency / 1.0; 90 | 91 | Serial.print("\nYou are tuned on "); 92 | Serial.print(freq); 93 | Serial.print("KHz | RSSI: "); 94 | Serial.print(rssi); 95 | Serial.print("| SNR: "); 96 | Serial.print(snr); 97 | Serial.print("| V - Volume: "); 98 | Serial.print(radio.getVolume()); 99 | 100 | } 101 | 102 | void loop() 103 | { 104 | 105 | if (Serial.available() > 0) 106 | { 107 | char key = Serial.read(); 108 | switch (key) 109 | { 110 | case '+': 111 | radio.setVolumeUp(); 112 | break; 113 | case '-': 114 | radio.setVolumeDown(); 115 | break; 116 | case '1': 117 | radio.setAM(7200, 7450, 7305, 5); 118 | break; 119 | case '2': 120 | radio.setAM(9300, 9800, 9600, 5); 121 | break; 122 | case '3': 123 | radio.setAM(11600, 12000, 11940, 5); 124 | break; 125 | case '4': 126 | radio.setAM(13500, 13900, 13600, 5); 127 | break; 128 | case '5': 129 | radio.setAM(15100, 15800, 15300, 5); 130 | break; 131 | case 'U': 132 | case 'u': 133 | radio.setFrequencyUp(); 134 | break; 135 | case 'D': 136 | case 'd': 137 | radio.setFrequencyDown(); 138 | break; 139 | case 'S': 140 | radio.seekHardware(0,1); 141 | break; 142 | case 's': 143 | radio.seekHardware(0,0); 144 | break; 145 | case '0': 146 | showStatus(); 147 | break; 148 | case '?': 149 | showHelp(); 150 | break; 151 | default: 152 | break; 153 | } 154 | delay(100); 155 | showStatus(); 156 | } 157 | if ( (millis() - elapsedTime) > 2000) { 158 | rssi = radio.getRssi(); 159 | snr = radio.getSnr(); 160 | 161 | if ( (lastRssi != rssi) || (lastSnr != snr) ) { 162 | showStatus(); 163 | lastRssi = rssi; lastSnr = snr; 164 | } 165 | 166 | elapsedTime = millis(); 167 | } 168 | } 169 | -------------------------------------------------------------------------------- /examples/BK1088_00_SERIAL_MONITOR/README.md: -------------------------------------------------------------------------------- 1 | # Example with Arduino IDE serial monitor 2 | 3 | This folder has examples that can help you to check your circuit (hardware) and firmware functionalities. 4 | 5 | 6 | -------------------------------------------------------------------------------- /examples/BK1088_02_TFT_DISPLAY/POC_01_ST7735/Rotary.cpp: -------------------------------------------------------------------------------- 1 | /* Rotary encoder handler for arduino. v1.1 2 | 3 | Copyright 2011 Ben Buxton. Licenced under the GNU GPL Version 3. 4 | Contact: bb@cactii.net 5 | 6 | A typical mechanical rotary encoder emits a two bit gray code 7 | on 3 output pins. Every step in the output (often accompanied 8 | by a physical 'click') generates a specific sequence of output 9 | codes on the pins. 10 | 11 | There are 3 pins used for the rotary encoding - one common and 12 | two 'bit' pins. 13 | 14 | The following is the typical sequence of code on the output when 15 | moving from one step to the next: 16 | 17 | Position Bit1 Bit2 18 | ---------------------- 19 | Step1 0 0 20 | 1/4 1 0 21 | 1/2 1 1 22 | 3/4 0 1 23 | Step2 0 0 24 | 25 | From this table, we can see that when moving from one 'click' to 26 | the next, there are 4 changes in the output code. 27 | 28 | - From an initial 0 - 0, Bit1 goes high, Bit0 stays low. 29 | - Then both bits are high, halfway through the step. 30 | - Then Bit1 goes low, but Bit2 stays high. 31 | - Finally at the end of the step, both bits return to 0. 32 | 33 | Detecting the direction is easy - the table simply goes in the other 34 | direction (read up instead of down). 35 | 36 | To decode this, we use a simple state machine. Every time the output 37 | code changes, it follows state, until finally a full steps worth of 38 | code is received (in the correct order). At the final 0-0, it returns 39 | a value indicating a step in one direction or the other. 40 | 41 | It's also possible to use 'half-step' mode. This just emits an event 42 | at both the 0-0 and 1-1 positions. This might be useful for some 43 | encoders where you want to detect all positions. 44 | 45 | If an invalid state happens (for example we go from '0-1' straight 46 | to '1-0'), the state machine resets to the start until 0-0 and the 47 | next valid codes occur. 48 | 49 | The biggest advantage of using a state machine over other algorithms 50 | is that this has inherent debounce built in. Other algorithms emit spurious 51 | output with switch bounce, but this one will simply flip between 52 | sub-states until the bounce settles, then continue along the state 53 | machine. 54 | A side effect of debounce is that fast rotations can cause steps to 55 | be skipped. By not requiring debounce, fast rotations can be accurately 56 | measured. 57 | Another advantage is the ability to properly handle bad state, such 58 | as due to EMI, etc. 59 | It is also a lot simpler than others - a static state table and less 60 | than 10 lines of logic. */ 61 | 62 | #include "Arduino.h" 63 | #include "Rotary.h" 64 | 65 | /* The below state table has, for each state (row), the new state 66 | to set based on the next encoder output. From left to right in, 67 | the table, the encoder outputs are 00, 01, 10, 11, and the value 68 | in that position is the new state to set. */ 69 | 70 | #define R_START 0x0 71 | #ifdef HALF_STEP 72 | // Use the half-step state table (emits a code at 00 and 11) 73 | #define R_CCW_BEGIN 0x1 74 | #define R_CW_BEGIN 0x2 75 | #define R_START_M 0x3 76 | #define R_CW_BEGIN_M 0x4 77 | #define R_CCW_BEGIN_M 0x5 78 | const unsigned char ttable[6][4] = { 79 | // R_START (00) 80 | {R_START_M, R_CW_BEGIN, R_CCW_BEGIN, R_START}, 81 | // R_CCW_BEGIN 82 | {R_START_M | DIR_CCW, R_START, R_CCW_BEGIN, R_START}, 83 | // R_CW_BEGIN 84 | {R_START_M | DIR_CW, R_CW_BEGIN, R_START, R_START}, 85 | // R_START_M (11) 86 | {R_START_M, R_CCW_BEGIN_M, R_CW_BEGIN_M, R_START}, 87 | // R_CW_BEGIN_M 88 | {R_START_M, R_START_M, R_CW_BEGIN_M, R_START | DIR_CW}, 89 | // R_CCW_BEGIN_M 90 | {R_START_M, R_CCW_BEGIN_M, R_START_M, R_START | DIR_CCW}, 91 | }; 92 | #else 93 | // Use the full-step state table (emits a code at 00 only) 94 | #define R_CW_FINAL 0x1 95 | #define R_CW_BEGIN 0x2 96 | #define R_CW_NEXT 0x3 97 | #define R_CCW_BEGIN 0x4 98 | #define R_CCW_FINAL 0x5 99 | #define R_CCW_NEXT 0x6 100 | 101 | const unsigned char ttable[7][4] = { 102 | // R_START 103 | {R_START, R_CW_BEGIN, R_CCW_BEGIN, R_START}, 104 | // R_CW_FINAL 105 | {R_CW_NEXT, R_START, R_CW_FINAL, R_START | DIR_CW}, 106 | // R_CW_BEGIN 107 | {R_CW_NEXT, R_CW_BEGIN, R_START, R_START}, 108 | // R_CW_NEXT 109 | {R_CW_NEXT, R_CW_BEGIN, R_CW_FINAL, R_START}, 110 | // R_CCW_BEGIN 111 | {R_CCW_NEXT, R_START, R_CCW_BEGIN, R_START}, 112 | // R_CCW_FINAL 113 | {R_CCW_NEXT, R_CCW_FINAL, R_START, R_START | DIR_CCW}, 114 | // R_CCW_NEXT 115 | {R_CCW_NEXT, R_CCW_FINAL, R_CCW_BEGIN, R_START}, 116 | }; 117 | #endif 118 | 119 | // Constructor. Each arg is the pin number for each encoder contact 120 | Rotary::Rotary(char _pin1, char _pin2) { 121 | // Assign variables 122 | pin1 = _pin1; 123 | pin2 = _pin2; 124 | // Set pins to input. 125 | pinMode(pin1, INPUT); 126 | pinMode(pin2, INPUT); 127 | #ifdef ENABLE_PULLUPS 128 | digitalWrite(pin1, HIGH); 129 | digitalWrite(pin2, HIGH); 130 | #endif 131 | // Initialise state 132 | state = R_START; 133 | } 134 | 135 | unsigned char Rotary::process() { 136 | // Grab state of input pins 137 | unsigned char pinstate = (digitalRead(pin2) << 1) | digitalRead(pin1); 138 | // Determine new state from the pins and state table 139 | state = ttable[state & 0xf][pinstate]; 140 | // Return emit bits, ie the generated event 141 | return state & 0x30; 142 | } 143 | 144 | -------------------------------------------------------------------------------- /examples/BK1088_02_TFT_DISPLAY/POC_01_ST7735/Rotary.h: -------------------------------------------------------------------------------- 1 | // Rotary encoder library for Arduino. 2 | #include "Arduino.h" 3 | 4 | #ifndef rotary_h 5 | #define rotary_h 6 | 7 | // Enable this to emit codes twice per step 8 | // #define HALF_STEP 9 | 10 | #define ENABLE_PULLUPS // Enable weak pullups 11 | 12 | // Values returned by 'process' 13 | #define DIR_NONE 0x0 // No complete step yet 14 | #define DIR_CW 0x10 // Clockwise step 15 | #define DIR_CCW 0x20 // Anti-clockwise step 16 | 17 | class Rotary 18 | { 19 | public: 20 | Rotary(char, char); 21 | // Process pin(s) 22 | unsigned char process(); 23 | private: 24 | unsigned char state; 25 | unsigned char pin1; 26 | unsigned char pin2; 27 | }; 28 | #endif 29 | 30 | -------------------------------------------------------------------------------- /examples/BK1088_02_TFT_DISPLAY/README.md: -------------------------------------------------------------------------------- 1 | # Examples 2 | 3 | It is an AM (LW, MW and SW) and FM receiver based on the DSP BK1088E device. This sketch uses an Arduino Pro Mini, 3.3V (8MZ); a SPI TFT ST7735 1.8; an encoder and push buttons. 4 | 5 | ## Wire up on Arduino UNO, Pro mini 6 | 7 | 8 | | Device name | Device Pin / Description | Arduino Pin | 9 | | ---------------- | -------------------- | ------------ | 10 | | Display TFT | | | 11 | | | RST (RESET) | 8 | 12 | | | RS or DC | 9 | 13 | | | CS or SS | 10 | 14 | | | SDI | 11 | 15 | | | CLK | 13 | 16 | | BK1088 | | | 17 | | | SDIO/SDA (pin 6) | A4 | 18 | | | SCLK/CLK (pin 7) | A5 | 19 | | Buttons | | | 20 | | | Band Up | 4 | 21 | | | Band Down | 5 | 22 | | | Volume Up | 6 | 23 | | | Volume Down | 7 | 24 | | Encoder | | | 25 | | | A | 2 | 26 | | | B | 3 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /examples/BK1088_03_LCD16X02_ESP32/Rotary.cpp: -------------------------------------------------------------------------------- 1 | /* Rotary encoder handler for arduino. v1.1 2 | 3 | Copyright 2011 Ben Buxton. Licenced under the GNU GPL Version 3. 4 | Contact: bb@cactii.net 5 | 6 | A typical mechanical rotary encoder emits a two bit gray code 7 | on 3 output pins. Every step in the output (often accompanied 8 | by a physical 'click') generates a specific sequence of output 9 | codes on the pins. 10 | 11 | There are 3 pins used for the rotary encoding - one common and 12 | two 'bit' pins. 13 | 14 | The following is the typical sequence of code on the output when 15 | moving from one step to the next: 16 | 17 | Position Bit1 Bit2 18 | ---------------------- 19 | Step1 0 0 20 | 1/4 1 0 21 | 1/2 1 1 22 | 3/4 0 1 23 | Step2 0 0 24 | 25 | From this table, we can see that when moving from one 'click' to 26 | the next, there are 4 changes in the output code. 27 | 28 | - From an initial 0 - 0, Bit1 goes high, Bit0 stays low. 29 | - Then both bits are high, halfway through the step. 30 | - Then Bit1 goes low, but Bit2 stays high. 31 | - Finally at the end of the step, both bits return to 0. 32 | 33 | Detecting the direction is easy - the table simply goes in the other 34 | direction (read up instead of down). 35 | 36 | To decode this, we use a simple state machine. Every time the output 37 | code changes, it follows state, until finally a full steps worth of 38 | code is received (in the correct order). At the final 0-0, it returns 39 | a value indicating a step in one direction or the other. 40 | 41 | It's also possible to use 'half-step' mode. This just emits an event 42 | at both the 0-0 and 1-1 positions. This might be useful for some 43 | encoders where you want to detect all positions. 44 | 45 | If an invalid state happens (for example we go from '0-1' straight 46 | to '1-0'), the state machine resets to the start until 0-0 and the 47 | next valid codes occur. 48 | 49 | The biggest advantage of using a state machine over other algorithms 50 | is that this has inherent debounce built in. Other algorithms emit spurious 51 | output with switch bounce, but this one will simply flip between 52 | sub-states until the bounce settles, then continue along the state 53 | machine. 54 | A side effect of debounce is that fast rotations can cause steps to 55 | be skipped. By not requiring debounce, fast rotations can be accurately 56 | measured. 57 | Another advantage is the ability to properly handle bad state, such 58 | as due to EMI, etc. 59 | It is also a lot simpler than others - a static state table and less 60 | than 10 lines of logic. */ 61 | 62 | #include "Arduino.h" 63 | #include "Rotary.h" 64 | 65 | /* The below state table has, for each state (row), the new state 66 | to set based on the next encoder output. From left to right in, 67 | the table, the encoder outputs are 00, 01, 10, 11, and the value 68 | in that position is the new state to set. */ 69 | 70 | #define R_START 0x0 71 | #ifdef HALF_STEP 72 | // Use the half-step state table (emits a code at 00 and 11) 73 | #define R_CCW_BEGIN 0x1 74 | #define R_CW_BEGIN 0x2 75 | #define R_START_M 0x3 76 | #define R_CW_BEGIN_M 0x4 77 | #define R_CCW_BEGIN_M 0x5 78 | const unsigned char ttable[6][4] = { 79 | // R_START (00) 80 | {R_START_M, R_CW_BEGIN, R_CCW_BEGIN, R_START}, 81 | // R_CCW_BEGIN 82 | {R_START_M | DIR_CCW, R_START, R_CCW_BEGIN, R_START}, 83 | // R_CW_BEGIN 84 | {R_START_M | DIR_CW, R_CW_BEGIN, R_START, R_START}, 85 | // R_START_M (11) 86 | {R_START_M, R_CCW_BEGIN_M, R_CW_BEGIN_M, R_START}, 87 | // R_CW_BEGIN_M 88 | {R_START_M, R_START_M, R_CW_BEGIN_M, R_START | DIR_CW}, 89 | // R_CCW_BEGIN_M 90 | {R_START_M, R_CCW_BEGIN_M, R_START_M, R_START | DIR_CCW}, 91 | }; 92 | #else 93 | // Use the full-step state table (emits a code at 00 only) 94 | #define R_CW_FINAL 0x1 95 | #define R_CW_BEGIN 0x2 96 | #define R_CW_NEXT 0x3 97 | #define R_CCW_BEGIN 0x4 98 | #define R_CCW_FINAL 0x5 99 | #define R_CCW_NEXT 0x6 100 | 101 | const unsigned char ttable[7][4] = { 102 | // R_START 103 | {R_START, R_CW_BEGIN, R_CCW_BEGIN, R_START}, 104 | // R_CW_FINAL 105 | {R_CW_NEXT, R_START, R_CW_FINAL, R_START | DIR_CW}, 106 | // R_CW_BEGIN 107 | {R_CW_NEXT, R_CW_BEGIN, R_START, R_START}, 108 | // R_CW_NEXT 109 | {R_CW_NEXT, R_CW_BEGIN, R_CW_FINAL, R_START}, 110 | // R_CCW_BEGIN 111 | {R_CCW_NEXT, R_START, R_CCW_BEGIN, R_START}, 112 | // R_CCW_FINAL 113 | {R_CCW_NEXT, R_CCW_FINAL, R_START, R_START | DIR_CCW}, 114 | // R_CCW_NEXT 115 | {R_CCW_NEXT, R_CCW_FINAL, R_CCW_BEGIN, R_START}, 116 | }; 117 | #endif 118 | 119 | // Constructor. Each arg is the pin number for each encoder contact 120 | Rotary::Rotary(char _pin1, char _pin2) { 121 | // Assign variables 122 | pin1 = _pin1; 123 | pin2 = _pin2; 124 | // Set pins to input. 125 | pinMode(pin1, INPUT); 126 | pinMode(pin2, INPUT); 127 | #ifdef ENABLE_PULLUPS 128 | digitalWrite(pin1, HIGH); 129 | digitalWrite(pin2, HIGH); 130 | #endif 131 | // Initialise state 132 | state = R_START; 133 | } 134 | 135 | unsigned char Rotary::process() { 136 | // Grab state of input pins 137 | unsigned char pinstate = (digitalRead(pin2) << 1) | digitalRead(pin1); 138 | // Determine new state from the pins and state table 139 | state = ttable[state & 0xf][pinstate]; 140 | // Return emit bits, ie the generated event 141 | return state & 0x30; 142 | } 143 | 144 | -------------------------------------------------------------------------------- /examples/BK1088_03_LCD16X02_ESP32/Rotary.h: -------------------------------------------------------------------------------- 1 | // Rotary encoder library for Arduino. 2 | #include "Arduino.h" 3 | 4 | #ifndef rotary_h 5 | #define rotary_h 6 | 7 | // Enable this to emit codes twice per step 8 | // #define HALF_STEP 9 | 10 | #define ENABLE_PULLUPS // Enable weak pullups 11 | 12 | // Values returned by 'process' 13 | #define DIR_NONE 0x0 // No complete step yet 14 | #define DIR_CW 0x10 // Clockwise step 15 | #define DIR_CCW 0x20 // Anti-clockwise step 16 | 17 | class Rotary 18 | { 19 | public: 20 | Rotary(char, char); 21 | // Process pin(s) 22 | unsigned char process(); 23 | private: 24 | unsigned char state; 25 | unsigned char pin1; 26 | unsigned char pin2; 27 | }; 28 | #endif 29 | 30 | -------------------------------------------------------------------------------- /examples/BK1088_04_NOKIA5110_RDS_NANO/Rotary.cpp: -------------------------------------------------------------------------------- 1 | /* Rotary encoder handler for arduino. v1.1 2 | 3 | Copyright 2011 Ben Buxton. Licenced under the GNU GPL Version 3. 4 | Contact: bb@cactii.net 5 | 6 | A typical mechanical rotary encoder emits a two bit gray code 7 | on 3 output pins. Every step in the output (often accompanied 8 | by a physical 'click') generates a specific sequence of output 9 | codes on the pins. 10 | 11 | There are 3 pins used for the rotary encoding - one common and 12 | two 'bit' pins. 13 | 14 | The following is the typical sequence of code on the output when 15 | moving from one step to the next: 16 | 17 | Position Bit1 Bit2 18 | ---------------------- 19 | Step1 0 0 20 | 1/4 1 0 21 | 1/2 1 1 22 | 3/4 0 1 23 | Step2 0 0 24 | 25 | From this table, we can see that when moving from one 'click' to 26 | the next, there are 4 changes in the output code. 27 | 28 | - From an initial 0 - 0, Bit1 goes high, Bit0 stays low. 29 | - Then both bits are high, halfway through the step. 30 | - Then Bit1 goes low, but Bit2 stays high. 31 | - Finally at the end of the step, both bits return to 0. 32 | 33 | Detecting the direction is easy - the table simply goes in the other 34 | direction (read up instead of down). 35 | 36 | To decode this, we use a simple state machine. Every time the output 37 | code changes, it follows state, until finally a full steps worth of 38 | code is received (in the correct order). At the final 0-0, it returns 39 | a value indicating a step in one direction or the other. 40 | 41 | It's also possible to use 'half-step' mode. This just emits an event 42 | at both the 0-0 and 1-1 positions. This might be useful for some 43 | encoders where you want to detect all positions. 44 | 45 | If an invalid state happens (for example we go from '0-1' straight 46 | to '1-0'), the state machine resets to the start until 0-0 and the 47 | next valid codes occur. 48 | 49 | The biggest advantage of using a state machine over other algorithms 50 | is that this has inherent debounce built in. Other algorithms emit spurious 51 | output with switch bounce, but this one will simply flip between 52 | sub-states until the bounce settles, then continue along the state 53 | machine. 54 | A side effect of debounce is that fast rotations can cause steps to 55 | be skipped. By not requiring debounce, fast rotations can be accurately 56 | measured. 57 | Another advantage is the ability to properly handle bad state, such 58 | as due to EMI, etc. 59 | It is also a lot simpler than others - a static state table and less 60 | than 10 lines of logic. */ 61 | 62 | #include "Arduino.h" 63 | #include "Rotary.h" 64 | 65 | /* The below state table has, for each state (row), the new state 66 | to set based on the next encoder output. From left to right in, 67 | the table, the encoder outputs are 00, 01, 10, 11, and the value 68 | in that position is the new state to set. */ 69 | 70 | #define R_START 0x0 71 | #ifdef HALF_STEP 72 | // Use the half-step state table (emits a code at 00 and 11) 73 | #define R_CCW_BEGIN 0x1 74 | #define R_CW_BEGIN 0x2 75 | #define R_START_M 0x3 76 | #define R_CW_BEGIN_M 0x4 77 | #define R_CCW_BEGIN_M 0x5 78 | const unsigned char ttable[6][4] = { 79 | // R_START (00) 80 | {R_START_M, R_CW_BEGIN, R_CCW_BEGIN, R_START}, 81 | // R_CCW_BEGIN 82 | {R_START_M | DIR_CCW, R_START, R_CCW_BEGIN, R_START}, 83 | // R_CW_BEGIN 84 | {R_START_M | DIR_CW, R_CW_BEGIN, R_START, R_START}, 85 | // R_START_M (11) 86 | {R_START_M, R_CCW_BEGIN_M, R_CW_BEGIN_M, R_START}, 87 | // R_CW_BEGIN_M 88 | {R_START_M, R_START_M, R_CW_BEGIN_M, R_START | DIR_CW}, 89 | // R_CCW_BEGIN_M 90 | {R_START_M, R_CCW_BEGIN_M, R_START_M, R_START | DIR_CCW}, 91 | }; 92 | #else 93 | // Use the full-step state table (emits a code at 00 only) 94 | #define R_CW_FINAL 0x1 95 | #define R_CW_BEGIN 0x2 96 | #define R_CW_NEXT 0x3 97 | #define R_CCW_BEGIN 0x4 98 | #define R_CCW_FINAL 0x5 99 | #define R_CCW_NEXT 0x6 100 | 101 | const unsigned char ttable[7][4] = { 102 | // R_START 103 | {R_START, R_CW_BEGIN, R_CCW_BEGIN, R_START}, 104 | // R_CW_FINAL 105 | {R_CW_NEXT, R_START, R_CW_FINAL, R_START | DIR_CW}, 106 | // R_CW_BEGIN 107 | {R_CW_NEXT, R_CW_BEGIN, R_START, R_START}, 108 | // R_CW_NEXT 109 | {R_CW_NEXT, R_CW_BEGIN, R_CW_FINAL, R_START}, 110 | // R_CCW_BEGIN 111 | {R_CCW_NEXT, R_START, R_CCW_BEGIN, R_START}, 112 | // R_CCW_FINAL 113 | {R_CCW_NEXT, R_CCW_FINAL, R_START, R_START | DIR_CCW}, 114 | // R_CCW_NEXT 115 | {R_CCW_NEXT, R_CCW_FINAL, R_CCW_BEGIN, R_START}, 116 | }; 117 | #endif 118 | 119 | // Constructor. Each arg is the pin number for each encoder contact 120 | Rotary::Rotary(char _pin1, char _pin2) { 121 | // Assign variables 122 | pin1 = _pin1; 123 | pin2 = _pin2; 124 | // Set pins to input. 125 | pinMode(pin1, INPUT); 126 | pinMode(pin2, INPUT); 127 | #ifdef ENABLE_PULLUPS 128 | digitalWrite(pin1, HIGH); 129 | digitalWrite(pin2, HIGH); 130 | #endif 131 | // Initialise state 132 | state = R_START; 133 | } 134 | 135 | unsigned char Rotary::process() { 136 | // Grab state of input pins 137 | unsigned char pinstate = (digitalRead(pin2) << 1) | digitalRead(pin1); 138 | // Determine new state from the pins and state table 139 | state = ttable[state & 0xf][pinstate]; 140 | // Return emit bits, ie the generated event 141 | return state & 0x30; 142 | } 143 | 144 | -------------------------------------------------------------------------------- /examples/BK1088_04_NOKIA5110_RDS_NANO/Rotary.h: -------------------------------------------------------------------------------- 1 | // Rotary encoder library for Arduino. 2 | #include "Arduino.h" 3 | 4 | #ifndef rotary_h 5 | #define rotary_h 6 | 7 | // Enable this to emit codes twice per step 8 | // #define HALF_STEP 9 | 10 | #define ENABLE_PULLUPS // Enable weak pullups 11 | 12 | // Values returned by 'process' 13 | #define DIR_NONE 0x0 // No complete step yet 14 | #define DIR_CW 0x10 // Clockwise step 15 | #define DIR_CCW 0x20 // Anti-clockwise step 16 | 17 | class Rotary 18 | { 19 | public: 20 | Rotary(char, char); 21 | // Process pin(s) 22 | unsigned char process(); 23 | private: 24 | unsigned char state; 25 | unsigned char pin1; 26 | unsigned char pin2; 27 | }; 28 | #endif 29 | 30 | -------------------------------------------------------------------------------- /examples/BK1088_04_NOKIA5110_RDS_NANO/user_manual.txt: -------------------------------------------------------------------------------- 1 | USER MANUAL 2 | 3 | This sketch saves the latest status of the receiver into the Atmega328 eeprom. So, the latest frequency, 4 | RDS and Stereo setup are written into and restored from eeprom. This way, when you turn the receiver on, 5 | the last setup will be shown to the user. 6 | 7 | Commands: 8 | 9 | 1) SEEK STATION 10 | 11 | The seek direction is controlled by the encoder (clockwise or counter-clockwise. Press encoder push button for seeking 12 | 13 | 14 | 2) RDS 15 | 16 | Press the RDS button to enable or disable the RDS function. 17 | Some stations do not have RDS service. Please, be sure if the station you are tuning into has RDS service. 18 | 19 | 3) Stereo 20 | 21 | Press the Stereo button to enable or disable the stereo feature. 22 | 23 | 24 | 4) Volume 25 | 26 | You have two buttons: volume up and volume down for volume control. 27 | 28 | 29 | 5) RESET EEPROM 30 | 31 | You can reset the receiver by pressing the encoder push button and turning on the receiver. 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /examples/Lilygo_t_embed/examples/ALL_IN_ONE_T_Embed/README.md: -------------------------------------------------------------------------------- 1 | # User Manual 2 | 3 | It is a complete receiver capable to tune LW, MW, SW on AM and SSB mode and also receive the 4 | regular comercial stations. 5 | 6 | This sketch runs on ESP32 device LilyGO T-Embed panel and it was based on [Volos'](https://youtu.be/bg2Ysrh85Ek) project and adapted to SI473X platform. 7 | 8 | ## Receiver Commands 9 | 10 | After compiling and installing the ALL_IN_ONE_T_Embed.ino sketch on the ESP32 or LilyGO T-Embed, follow the guidelines below to operate the receiver. 11 | 12 | ### 1. BAND SELECTION 13 | 14 | Select the band by pressing the encoder push button once and then rotate the encoder clockwise or counterclockwise. 15 | When the desired band is shown on display, you can press the button once again to select the band. 16 | 17 | 18 | ### 2. STEP, MODE, AGC/Attenuation, Automatic Volume Control (AVC), bandwidth, Soft Mute and VOLUME 19 | 20 | 2.1. Press the encoder push button twice (within 1/2 second). 21 | 2.2. After that, the display will show you the Menu text. Rotate the encoder clockwise or counterclockwise 22 | to select the option (STEP, MODE, AGC/Attenuation, bandwidth, VOLUME, etc). 23 | 2.3. After that, select the option you want to setup by pressing the encoder push button once again. 24 | 2.4. After that, rotate the encoder clockwise or counterclockwise to select the parameter. 25 | 2.5. Finally, you can press the button once again to go back to the main screen. 26 | 27 | ### 3. VFO/BFO Switch 28 | 29 | 3.1. Press the encoder push button twice (within 1/2 second). 30 | 3.2. Rotate the encoder clockwise or counterclockwise and go to the BFO option. This option is shown only on SSB mode. 31 | 3.3. Press the encoder push button once again. 32 | 3.4. Rotate the encoder clockwise or counterclockwise to increment or decrement the BFO (select the offset). 33 | 3.5. If you press the button again to go back to main screen. 34 | 35 | ### 4. SEEK 36 | 37 | It is important to know that the direction of the last movement of the encoder will define the direction of the station search (from the current position to lower or higher frequencies). 38 | 39 | 4.1. Select the menu by pressing twice the encoder push button. 40 | 4.2. Rotate the encoder clockwise or counterclockwise to select the "Seek" option. 41 | 4.3. Press the encoder push button once. 42 | 43 | 44 | ATTENTION: Try press and release the push button fastly. I mean, do not keep the button pressed for a long time. 45 | If you do that, you might alternate the command status (enable and disable) randomly. 46 | 47 | -------------------------------------------------------------------------------- /examples/Lilygo_t_embed/examples/ALL_IN_ONE_T_Embed/Rotary.cpp: -------------------------------------------------------------------------------- 1 | /* Rotary encoder handler for arduino. v1.1 2 | 3 | Copyright 2011 Ben Buxton. Licenced under the GNU GPL Version 3. 4 | Contact: bb@cactii.net 5 | 6 | A typical mechanical rotary encoder emits a two bit gray code 7 | on 3 output pins. Every step in the output (often accompanied 8 | by a physical 'click') generates a specific sequence of output 9 | codes on the pins. 10 | 11 | There are 3 pins used for the rotary encoding - one common and 12 | two 'bit' pins. 13 | 14 | The following is the typical sequence of code on the output when 15 | moving from one step to the next: 16 | 17 | Position Bit1 Bit2 18 | ---------------------- 19 | Step1 0 0 20 | 1/4 1 0 21 | 1/2 1 1 22 | 3/4 0 1 23 | Step2 0 0 24 | 25 | From this table, we can see that when moving from one 'click' to 26 | the next, there are 4 changes in the output code. 27 | 28 | - From an initial 0 - 0, Bit1 goes high, Bit0 stays low. 29 | - Then both bits are high, halfway through the step. 30 | - Then Bit1 goes low, but Bit2 stays high. 31 | - Finally at the end of the step, both bits return to 0. 32 | 33 | Detecting the direction is easy - the table simply goes in the other 34 | direction (read up instead of down). 35 | 36 | To decode this, we use a simple state machine. Every time the output 37 | code changes, it follows state, until finally a full steps worth of 38 | code is received (in the correct order). At the final 0-0, it returns 39 | a value indicating a step in one direction or the other. 40 | 41 | It's also possible to use 'half-step' mode. This just emits an event 42 | at both the 0-0 and 1-1 positions. This might be useful for some 43 | encoders where you want to detect all positions. 44 | 45 | If an invalid state happens (for example we go from '0-1' straight 46 | to '1-0'), the state machine resets to the start until 0-0 and the 47 | next valid codes occur. 48 | 49 | The biggest advantage of using a state machine over other algorithms 50 | is that this has inherent debounce built in. Other algorithms emit spurious 51 | output with switch bounce, but this one will simply flip between 52 | sub-states until the bounce settles, then continue along the state 53 | machine. 54 | A side effect of debounce is that fast rotations can cause steps to 55 | be skipped. By not requiring debounce, fast rotations can be accurately 56 | measured. 57 | Another advantage is the ability to properly handle bad state, such 58 | as due to EMI, etc. 59 | It is also a lot simpler than others - a static state table and less 60 | than 10 lines of logic. */ 61 | 62 | #include "Arduino.h" 63 | #include "Rotary.h" 64 | 65 | /* The below state table has, for each state (row), the new state 66 | to set based on the next encoder output. From left to right in, 67 | the table, the encoder outputs are 00, 01, 10, 11, and the value 68 | in that position is the new state to set. */ 69 | 70 | #define R_START 0x0 71 | #ifdef HALF_STEP 72 | // Use the half-step state table (emits a code at 00 and 11) 73 | #define R_CCW_BEGIN 0x1 74 | #define R_CW_BEGIN 0x2 75 | #define R_START_M 0x3 76 | #define R_CW_BEGIN_M 0x4 77 | #define R_CCW_BEGIN_M 0x5 78 | const unsigned char ttable[6][4] = { 79 | // R_START (00) 80 | {R_START_M, R_CW_BEGIN, R_CCW_BEGIN, R_START}, 81 | // R_CCW_BEGIN 82 | {R_START_M | DIR_CCW, R_START, R_CCW_BEGIN, R_START}, 83 | // R_CW_BEGIN 84 | {R_START_M | DIR_CW, R_CW_BEGIN, R_START, R_START}, 85 | // R_START_M (11) 86 | {R_START_M, R_CCW_BEGIN_M, R_CW_BEGIN_M, R_START}, 87 | // R_CW_BEGIN_M 88 | {R_START_M, R_START_M, R_CW_BEGIN_M, R_START | DIR_CW}, 89 | // R_CCW_BEGIN_M 90 | {R_START_M, R_CCW_BEGIN_M, R_START_M, R_START | DIR_CCW}, 91 | }; 92 | #else 93 | // Use the full-step state table (emits a code at 00 only) 94 | #define R_CW_FINAL 0x1 95 | #define R_CW_BEGIN 0x2 96 | #define R_CW_NEXT 0x3 97 | #define R_CCW_BEGIN 0x4 98 | #define R_CCW_FINAL 0x5 99 | #define R_CCW_NEXT 0x6 100 | 101 | const unsigned char ttable[7][4] = { 102 | // R_START 103 | {R_START, R_CW_BEGIN, R_CCW_BEGIN, R_START}, 104 | // R_CW_FINAL 105 | {R_CW_NEXT, R_START, R_CW_FINAL, R_START | DIR_CW}, 106 | // R_CW_BEGIN 107 | {R_CW_NEXT, R_CW_BEGIN, R_START, R_START}, 108 | // R_CW_NEXT 109 | {R_CW_NEXT, R_CW_BEGIN, R_CW_FINAL, R_START}, 110 | // R_CCW_BEGIN 111 | {R_CCW_NEXT, R_START, R_CCW_BEGIN, R_START}, 112 | // R_CCW_FINAL 113 | {R_CCW_NEXT, R_CCW_FINAL, R_START, R_START | DIR_CCW}, 114 | // R_CCW_NEXT 115 | {R_CCW_NEXT, R_CCW_FINAL, R_CCW_BEGIN, R_START}, 116 | }; 117 | #endif 118 | 119 | // Constructor. Each arg is the pin number for each encoder contact 120 | Rotary::Rotary(char _pin1, char _pin2) { 121 | // Assign variables 122 | pin1 = _pin1; 123 | pin2 = _pin2; 124 | // Set pins to input. 125 | pinMode(pin1, INPUT); 126 | pinMode(pin2, INPUT); 127 | #ifdef ENABLE_PULLUPS 128 | digitalWrite(pin1, HIGH); 129 | digitalWrite(pin2, HIGH); 130 | #endif 131 | // Initialise state 132 | state = R_START; 133 | } 134 | 135 | unsigned char Rotary::process() { 136 | // Grab state of input pins 137 | unsigned char pinstate = (digitalRead(pin2) << 1) | digitalRead(pin1); 138 | // Determine new state from the pins and state table 139 | state = ttable[state & 0xf][pinstate]; 140 | // Return emit bits, ie the generated event 141 | return state & 0x30; 142 | } 143 | 144 | -------------------------------------------------------------------------------- /examples/Lilygo_t_embed/examples/ALL_IN_ONE_T_Embed/Rotary.h: -------------------------------------------------------------------------------- 1 | // Rotary encoder library for Arduino. 2 | #include "Arduino.h" 3 | 4 | #ifndef rotary_h 5 | #define rotary_h 6 | 7 | // Enable this to emit codes twice per step 8 | // #define HALF_STEP 9 | 10 | #define ENABLE_PULLUPS // Enable weak pullups 11 | 12 | // Values returned by 'process' 13 | #define DIR_NONE 0x0 // No complete step yet 14 | #define DIR_CW 0x10 // Clockwise step 15 | #define DIR_CCW 0x20 // Anti-clockwise step 16 | 17 | class Rotary 18 | { 19 | public: 20 | Rotary(char, char); 21 | // Process pin(s) 22 | unsigned char process(); 23 | private: 24 | unsigned char state; 25 | unsigned char pin1; 26 | unsigned char pin2; 27 | }; 28 | #endif 29 | 30 | -------------------------------------------------------------------------------- /examples/Lilygo_t_embed/examples/ALL_IN_ONE_T_Embed/user_manual.txt: -------------------------------------------------------------------------------- 1 | User Manual 2 | 3 | Commands 4 | 5 | 1. BAND SELECTION 6 | 7 | Select the band by pressing the encoder push button once and then rotate the encoder clockwise or counterclockwise. 8 | When the desired band is shown on display, you can press the button once again to select the band. 9 | 10 | 11 | 2. STEP, MODE, AGC/Attenuation, bandwidth, Soft Mute and VOLUME 12 | 13 | 2.1. Press the encoder push button twice (within 1/2 second). 14 | 2.2. After that, the display will show you the Menu text. Rotate the encoder clockwise or counterclockwise 15 | to select the option (STEP, MODE, AGC/Attenuation, bandwidth, VOLUME, etc). 16 | 2.3. After that, select the option you want to setup by pressing the encoder push button once again. 17 | 2.4. After that, rotate the encoder clockwise or counterclockwise to select the parameter. 18 | 2.5. Finally, you can press the button once again to go back to the main screen. 19 | 20 | 3. VFO/BFO Switch 21 | 22 | 3.1. Press the encoder push button twice (within 1/2 second). 23 | 3.2. Rotate the encoder clockwise or counterclockwise and go to the BFO option. This option is shown only on SSB mode. 24 | 3.3. Press the encoder push button once again. 25 | 3.4. Rotate the encoder clockwise or counterclockwise to increment or decrement the BFO (select the offset). 26 | 3.5. If you press the button again to go back to main screen. 27 | 28 | 4. SEEK 29 | 30 | 4.1. Select the menu by pressing twice the encoder push button. 31 | 4.2. Rotate the encoder clockwise or counterclockwise to select "Seek Up" or "Seek Down". 32 | 4.3. Press the encoder push button once on "Seek Up" or "Seek Down". 33 | 34 | 35 | ATTENTION: Try press and release the push button fastly. I mean, do not keep the button pressed for a long time. 36 | If you do that, you might alternate the command status (enable and disable) randomly. 37 | 38 | -------------------------------------------------------------------------------- /examples/Lilygo_t_embed/images/ESP32_S.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/examples/Lilygo_t_embed/images/ESP32_S.png -------------------------------------------------------------------------------- /examples/Lilygo_t_embed/images/lib00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/examples/Lilygo_t_embed/images/lib00.png -------------------------------------------------------------------------------- /examples/Lilygo_t_embed/images/lib00A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/examples/Lilygo_t_embed/images/lib00A.png -------------------------------------------------------------------------------- /examples/Lilygo_t_embed/images/lib01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/examples/Lilygo_t_embed/images/lib01.png -------------------------------------------------------------------------------- /examples/Lilygo_t_embed/images/lib02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/examples/Lilygo_t_embed/images/lib02.png -------------------------------------------------------------------------------- /examples/Lilygo_t_embed/images/lib04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/examples/Lilygo_t_embed/images/lib04.png -------------------------------------------------------------------------------- /examples/Lilygo_t_embed/images/lib05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/examples/Lilygo_t_embed/images/lib05.png -------------------------------------------------------------------------------- /examples/Lilygo_t_embed/images/lily01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/examples/Lilygo_t_embed/images/lily01.jpg -------------------------------------------------------------------------------- /examples/Lilygo_t_embed/images/lily02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/examples/Lilygo_t_embed/images/lily02.jpg -------------------------------------------------------------------------------- /examples/Lilygo_t_embed/images/t_embed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/examples/Lilygo_t_embed/images/t_embed.png -------------------------------------------------------------------------------- /examples/README.md: -------------------------------------------------------------------------------- 1 | # Examples 2 | 3 | 4 | This folder has sobre example that can help you to develop your won receiver based on BK1088/86 device. 5 | -------------------------------------------------------------------------------- /examples/UNDER_CONSTRUCTION/BK1088_05_OLED/Rotary.cpp: -------------------------------------------------------------------------------- 1 | /* Rotary encoder handler for arduino. v1.1 2 | 3 | Copyright 2011 Ben Buxton. Licenced under the GNU GPL Version 3. 4 | Contact: bb@cactii.net 5 | 6 | A typical mechanical rotary encoder emits a two bit gray code 7 | on 3 output pins. Every step in the output (often accompanied 8 | by a physical 'click') generates a specific sequence of output 9 | codes on the pins. 10 | 11 | There are 3 pins used for the rotary encoding - one common and 12 | two 'bit' pins. 13 | 14 | The following is the typical sequence of code on the output when 15 | moving from one step to the next: 16 | 17 | Position Bit1 Bit2 18 | ---------------------- 19 | Step1 0 0 20 | 1/4 1 0 21 | 1/2 1 1 22 | 3/4 0 1 23 | Step2 0 0 24 | 25 | From this table, we can see that when moving from one 'click' to 26 | the next, there are 4 changes in the output code. 27 | 28 | - From an initial 0 - 0, Bit1 goes high, Bit0 stays low. 29 | - Then both bits are high, halfway through the step. 30 | - Then Bit1 goes low, but Bit2 stays high. 31 | - Finally at the end of the step, both bits return to 0. 32 | 33 | Detecting the direction is easy - the table simply goes in the other 34 | direction (read up instead of down). 35 | 36 | To decode this, we use a simple state machine. Every time the output 37 | code changes, it follows state, until finally a full steps worth of 38 | code is received (in the correct order). At the final 0-0, it returns 39 | a value indicating a step in one direction or the other. 40 | 41 | It's also possible to use 'half-step' mode. This just emits an event 42 | at both the 0-0 and 1-1 positions. This might be useful for some 43 | encoders where you want to detect all positions. 44 | 45 | If an invalid state happens (for example we go from '0-1' straight 46 | to '1-0'), the state machine resets to the start until 0-0 and the 47 | next valid codes occur. 48 | 49 | The biggest advantage of using a state machine over other algorithms 50 | is that this has inherent debounce built in. Other algorithms emit spurious 51 | output with switch bounce, but this one will simply flip between 52 | sub-states until the bounce settles, then continue along the state 53 | machine. 54 | A side effect of debounce is that fast rotations can cause steps to 55 | be skipped. By not requiring debounce, fast rotations can be accurately 56 | measured. 57 | Another advantage is the ability to properly handle bad state, such 58 | as due to EMI, etc. 59 | It is also a lot simpler than others - a static state table and less 60 | than 10 lines of logic. */ 61 | 62 | #include "Arduino.h" 63 | #include "Rotary.h" 64 | 65 | /* The below state table has, for each state (row), the new state 66 | to set based on the next encoder output. From left to right in, 67 | the table, the encoder outputs are 00, 01, 10, 11, and the value 68 | in that position is the new state to set. */ 69 | 70 | #define R_START 0x0 71 | #ifdef HALF_STEP 72 | // Use the half-step state table (emits a code at 00 and 11) 73 | #define R_CCW_BEGIN 0x1 74 | #define R_CW_BEGIN 0x2 75 | #define R_START_M 0x3 76 | #define R_CW_BEGIN_M 0x4 77 | #define R_CCW_BEGIN_M 0x5 78 | const unsigned char ttable[6][4] = { 79 | // R_START (00) 80 | {R_START_M, R_CW_BEGIN, R_CCW_BEGIN, R_START}, 81 | // R_CCW_BEGIN 82 | {R_START_M | DIR_CCW, R_START, R_CCW_BEGIN, R_START}, 83 | // R_CW_BEGIN 84 | {R_START_M | DIR_CW, R_CW_BEGIN, R_START, R_START}, 85 | // R_START_M (11) 86 | {R_START_M, R_CCW_BEGIN_M, R_CW_BEGIN_M, R_START}, 87 | // R_CW_BEGIN_M 88 | {R_START_M, R_START_M, R_CW_BEGIN_M, R_START | DIR_CW}, 89 | // R_CCW_BEGIN_M 90 | {R_START_M, R_CCW_BEGIN_M, R_START_M, R_START | DIR_CCW}, 91 | }; 92 | #else 93 | // Use the full-step state table (emits a code at 00 only) 94 | #define R_CW_FINAL 0x1 95 | #define R_CW_BEGIN 0x2 96 | #define R_CW_NEXT 0x3 97 | #define R_CCW_BEGIN 0x4 98 | #define R_CCW_FINAL 0x5 99 | #define R_CCW_NEXT 0x6 100 | 101 | const unsigned char ttable[7][4] = { 102 | // R_START 103 | {R_START, R_CW_BEGIN, R_CCW_BEGIN, R_START}, 104 | // R_CW_FINAL 105 | {R_CW_NEXT, R_START, R_CW_FINAL, R_START | DIR_CW}, 106 | // R_CW_BEGIN 107 | {R_CW_NEXT, R_CW_BEGIN, R_START, R_START}, 108 | // R_CW_NEXT 109 | {R_CW_NEXT, R_CW_BEGIN, R_CW_FINAL, R_START}, 110 | // R_CCW_BEGIN 111 | {R_CCW_NEXT, R_START, R_CCW_BEGIN, R_START}, 112 | // R_CCW_FINAL 113 | {R_CCW_NEXT, R_CCW_FINAL, R_START, R_START | DIR_CCW}, 114 | // R_CCW_NEXT 115 | {R_CCW_NEXT, R_CCW_FINAL, R_CCW_BEGIN, R_START}, 116 | }; 117 | #endif 118 | 119 | // Constructor. Each arg is the pin number for each encoder contact 120 | Rotary::Rotary(char _pin1, char _pin2) { 121 | // Assign variables 122 | pin1 = _pin1; 123 | pin2 = _pin2; 124 | // Set pins to input. 125 | pinMode(pin1, INPUT); 126 | pinMode(pin2, INPUT); 127 | #ifdef ENABLE_PULLUPS 128 | digitalWrite(pin1, HIGH); 129 | digitalWrite(pin2, HIGH); 130 | #endif 131 | // Initialise state 132 | state = R_START; 133 | } 134 | 135 | unsigned char Rotary::process() { 136 | // Grab state of input pins 137 | unsigned char pinstate = (digitalRead(pin2) << 1) | digitalRead(pin1); 138 | // Determine new state from the pins and state table 139 | state = ttable[state & 0xf][pinstate]; 140 | // Return emit bits, ie the generated event 141 | return state & 0x30; 142 | } 143 | 144 | -------------------------------------------------------------------------------- /examples/UNDER_CONSTRUCTION/BK1088_05_OLED/Rotary.h: -------------------------------------------------------------------------------- 1 | // Rotary encoder library for Arduino. 2 | #include "Arduino.h" 3 | 4 | #ifndef rotary_h 5 | #define rotary_h 6 | 7 | // Enable this to emit codes twice per step 8 | // #define HALF_STEP 9 | 10 | #define ENABLE_PULLUPS // Enable weak pullups 11 | 12 | // Values returned by 'process' 13 | #define DIR_NONE 0x0 // No complete step yet 14 | #define DIR_CW 0x10 // Clockwise step 15 | #define DIR_CCW 0x20 // Anti-clockwise step 16 | 17 | class Rotary 18 | { 19 | public: 20 | Rotary(char, char); 21 | // Process pin(s) 22 | unsigned char process(); 23 | private: 24 | unsigned char state; 25 | unsigned char pin1; 26 | unsigned char pin2; 27 | }; 28 | #endif 29 | 30 | -------------------------------------------------------------------------------- /examples/UNDER_CONSTRUCTION/BK1088_07_RDS_TFT_TOUCH_SHIELD/Rotary.cpp: -------------------------------------------------------------------------------- 1 | /* Rotary encoder handler for arduino. v1.1 2 | 3 | Copyright 2011 Ben Buxton. Licenced under the GNU GPL Version 3. 4 | Contact: bb@cactii.net 5 | 6 | A typical mechanical rotary encoder emits a two bit gray code 7 | on 3 output pins. Every step in the output (often accompanied 8 | by a physical 'click') generates a specific sequence of output 9 | codes on the pins. 10 | 11 | There are 3 pins used for the rotary encoding - one common and 12 | two 'bit' pins. 13 | 14 | The following is the typical sequence of code on the output when 15 | moving from one step to the next: 16 | 17 | Position Bit1 Bit2 18 | ---------------------- 19 | Step1 0 0 20 | 1/4 1 0 21 | 1/2 1 1 22 | 3/4 0 1 23 | Step2 0 0 24 | 25 | From this table, we can see that when moving from one 'click' to 26 | the next, there are 4 changes in the output code. 27 | 28 | - From an initial 0 - 0, Bit1 goes high, Bit0 stays low. 29 | - Then both bits are high, halfway through the step. 30 | - Then Bit1 goes low, but Bit2 stays high. 31 | - Finally at the end of the step, both bits return to 0. 32 | 33 | Detecting the direction is easy - the table simply goes in the other 34 | direction (read up instead of down). 35 | 36 | To decode this, we use a simple state machine. Every time the output 37 | code changes, it follows state, until finally a full steps worth of 38 | code is received (in the correct order). At the final 0-0, it returns 39 | a value indicating a step in one direction or the other. 40 | 41 | It's also possible to use 'half-step' mode. This just emits an event 42 | at both the 0-0 and 1-1 positions. This might be useful for some 43 | encoders where you want to detect all positions. 44 | 45 | If an invalid state happens (for example we go from '0-1' straight 46 | to '1-0'), the state machine resets to the start until 0-0 and the 47 | next valid codes occur. 48 | 49 | The biggest advantage of using a state machine over other algorithms 50 | is that this has inherent debounce built in. Other algorithms emit spurious 51 | output with switch bounce, but this one will simply flip between 52 | sub-states until the bounce settles, then continue along the state 53 | machine. 54 | A side effect of debounce is that fast rotations can cause steps to 55 | be skipped. By not requiring debounce, fast rotations can be accurately 56 | measured. 57 | Another advantage is the ability to properly handle bad state, such 58 | as due to EMI, etc. 59 | It is also a lot simpler than others - a static state table and less 60 | than 10 lines of logic. */ 61 | 62 | #include "Arduino.h" 63 | #include "Rotary.h" 64 | 65 | /* The below state table has, for each state (row), the new state 66 | to set based on the next encoder output. From left to right in, 67 | the table, the encoder outputs are 00, 01, 10, 11, and the value 68 | in that position is the new state to set. */ 69 | 70 | #define R_START 0x0 71 | #ifdef HALF_STEP 72 | // Use the half-step state table (emits a code at 00 and 11) 73 | #define R_CCW_BEGIN 0x1 74 | #define R_CW_BEGIN 0x2 75 | #define R_START_M 0x3 76 | #define R_CW_BEGIN_M 0x4 77 | #define R_CCW_BEGIN_M 0x5 78 | const unsigned char ttable[6][4] = { 79 | // R_START (00) 80 | {R_START_M, R_CW_BEGIN, R_CCW_BEGIN, R_START}, 81 | // R_CCW_BEGIN 82 | {R_START_M | DIR_CCW, R_START, R_CCW_BEGIN, R_START}, 83 | // R_CW_BEGIN 84 | {R_START_M | DIR_CW, R_CW_BEGIN, R_START, R_START}, 85 | // R_START_M (11) 86 | {R_START_M, R_CCW_BEGIN_M, R_CW_BEGIN_M, R_START}, 87 | // R_CW_BEGIN_M 88 | {R_START_M, R_START_M, R_CW_BEGIN_M, R_START | DIR_CW}, 89 | // R_CCW_BEGIN_M 90 | {R_START_M, R_CCW_BEGIN_M, R_START_M, R_START | DIR_CCW}, 91 | }; 92 | #else 93 | // Use the full-step state table (emits a code at 00 only) 94 | #define R_CW_FINAL 0x1 95 | #define R_CW_BEGIN 0x2 96 | #define R_CW_NEXT 0x3 97 | #define R_CCW_BEGIN 0x4 98 | #define R_CCW_FINAL 0x5 99 | #define R_CCW_NEXT 0x6 100 | 101 | const unsigned char ttable[7][4] = { 102 | // R_START 103 | {R_START, R_CW_BEGIN, R_CCW_BEGIN, R_START}, 104 | // R_CW_FINAL 105 | {R_CW_NEXT, R_START, R_CW_FINAL, R_START | DIR_CW}, 106 | // R_CW_BEGIN 107 | {R_CW_NEXT, R_CW_BEGIN, R_START, R_START}, 108 | // R_CW_NEXT 109 | {R_CW_NEXT, R_CW_BEGIN, R_CW_FINAL, R_START}, 110 | // R_CCW_BEGIN 111 | {R_CCW_NEXT, R_START, R_CCW_BEGIN, R_START}, 112 | // R_CCW_FINAL 113 | {R_CCW_NEXT, R_CCW_FINAL, R_START, R_START | DIR_CCW}, 114 | // R_CCW_NEXT 115 | {R_CCW_NEXT, R_CCW_FINAL, R_CCW_BEGIN, R_START}, 116 | }; 117 | #endif 118 | 119 | // Constructor. Each arg is the pin number for each encoder contact 120 | Rotary::Rotary(char _pin1, char _pin2) { 121 | // Assign variables 122 | pin1 = _pin1; 123 | pin2 = _pin2; 124 | // Set pins to input. 125 | pinMode(pin1, INPUT); 126 | pinMode(pin2, INPUT); 127 | #ifdef ENABLE_PULLUPS 128 | digitalWrite(pin1, HIGH); 129 | digitalWrite(pin2, HIGH); 130 | #endif 131 | // Initialise state 132 | state = R_START; 133 | } 134 | 135 | unsigned char Rotary::process() { 136 | // Grab state of input pins 137 | unsigned char pinstate = (digitalRead(pin2) << 1) | digitalRead(pin1); 138 | // Determine new state from the pins and state table 139 | state = ttable[state & 0xf][pinstate]; 140 | // Return emit bits, ie the generated event 141 | return state & 0x30; 142 | } 143 | 144 | -------------------------------------------------------------------------------- /examples/UNDER_CONSTRUCTION/BK1088_07_RDS_TFT_TOUCH_SHIELD/Rotary.h: -------------------------------------------------------------------------------- 1 | // Rotary encoder library for Arduino. 2 | #include "Arduino.h" 3 | 4 | #ifndef rotary_h 5 | #define rotary_h 6 | 7 | // Enable this to emit codes twice per step 8 | // #define HALF_STEP 9 | 10 | #define ENABLE_PULLUPS // Enable weak pullups 11 | 12 | // Values returned by 'process' 13 | #define DIR_NONE 0x0 // No complete step yet 14 | #define DIR_CW 0x10 // Clockwise step 15 | #define DIR_CCW 0x20 // Anti-clockwise step 16 | 17 | class Rotary 18 | { 19 | public: 20 | Rotary(char, char); 21 | // Process pin(s) 22 | unsigned char process(); 23 | private: 24 | unsigned char state; 25 | unsigned char pin1; 26 | unsigned char pin2; 27 | }; 28 | #endif 29 | 30 | -------------------------------------------------------------------------------- /examples/compile_all.sh: -------------------------------------------------------------------------------- 1 | # This script uses the arduino-cli to compile the arduino sketches using command line (without Arduino IDE). 2 | # It is very useful to check the library on multiple board types after bug fixes and improvements. 3 | # It runs on a MacOS but you can port it to Linux or Windows easily. 4 | # Some compilation results (bin and hex files) will be stores in your Download directory (/Users//Downloads/hex) 5 | # ATTENTION: 1) Be careful with --output-dir arduino-cli option. Before compiling, this option removes all the contents of the last level folder. 6 | # For example: if you use "--output-dir ~/Downloads", all the current content of the Downloads folder will be lost. 7 | # if you use "--output-dir ~/Downloads/hex", all current content of the hex folder will be lost and the Downloads 8 | # content will be preserved. 9 | # 2) I have enabled all the compile warnings (--warnings all) to check some questionable situations that can be avoided or modified to prevent future warnings. 10 | # 3) I have enabled the "--verbose" parameter to show the deteiled logs of the compiling process. 11 | # Please, see the file config_libraries_and_boards.sh 12 | # Ricardo Lima Caratti Mar 2023 13 | 14 | # compiles POC 15 | echo "********************" 16 | echo "Arduino ATmega328 based board" 17 | echo "********************" 18 | arduino-cli compile -b arduino:avr:nano ./BK1088_00_SERIAL_MONITOR/POC_01_CIRCUIT_TEST --output-dir ~/Downloads/hex/atmega/POC_01_CIRCUIT_TEST --warnings all 19 | arduino-cli compile -b arduino:avr:nano ./BK1088_00_SERIAL_MONITOR/POC_02_AM_FM --output-dir ~/Downloads/hex/atmega/POC_02_AM_FM --warnings all 20 | arduino-cli compile -b arduino:avr:nano ./BK1088_00_SERIAL_MONITOR/POC_03_SW --output-dir ~/Downloads/hex/atmega/POC_03_SW --warnings all 21 | arduino-cli compile -b arduino:avr:nano ./BK1088_02_TFT_DISPLAY/POC_01_ST7735 --output-dir ~/Downloads/hex/atmega/POC_01_ST7735 --warnings all 22 | arduino-cli compile -b arduino:avr:nano ./BK1088_04_NOKIA5110_RDS_NANO --output-dir ~/Downloads/hex/atmega/BK1088_04_NOKIA5110_RDS_NANO --warnings all 23 | 24 | 25 | echo "********************" 26 | echo "Arduino LGT8FX based board" 27 | echo "********************" 28 | 29 | arduino-cli compile -b lgt8fx:avr:328 ./BK1088_00_SERIAL_MONITOR/POC_01_CIRCUIT_TEST --output-dir ~/Downloads/hex/lgt8fx/POC_01_CIRCUIT_TEST --warnings all 30 | arduino-cli compile -b lgt8fx:avr:328 ./BK1088_00_SERIAL_MONITOR/POC_02_AM_FM --output-dir ~/Downloads/hex/lgt8fx/POC_02_AM_FM 31 | arduino-cli compile -b lgt8fx:avr:328 ./BK1088_00_SERIAL_MONITOR/POC_03_SW --output-dir ~/Downloads/hex/lgt8fx/POC_03_SW 32 | 33 | # compiles ESP32 LCD16x2_ALL_IN_ONE 34 | echo "********************" 35 | echo "ESP32" 36 | echo "ESP32 LCD16x2" 37 | echo "********************" 38 | arduino-cli compile --fqbn esp32:esp32:esp32-poe-iso ./BK1088_03_LCD16X02_ESP32 --output-dir ~/Downloads/hex/ESP32/DEVM/BK1088_03_LCD16X02_ESP32 --warnings all 39 | -------------------------------------------------------------------------------- /examples/config_libraries_and_boards.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | < 2 | 3 | 4 | 5 | 6 | 7 | 8 | PU2CLR BK108X Arduino Library: BK108X/src/BK108X.cpp File Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 |
24 | 25 | 26 | 27 | 28 | 33 | 34 | 35 |
29 |
PU2CLR BK108X Arduino Library 1.0.2 30 |
31 |
This is an Arduino Library to control the BK108X device
32 |
36 |
37 | 38 | 39 | 44 | 45 | 46 | 54 | 55 |
56 |
57 | 62 |
64 |
65 |
66 | 71 |
72 | 73 |
77 |
78 | 79 | 80 |
81 |
82 |
83 |
84 |
85 |
Loading...
86 |
Searching...
87 |
No Matches
88 |
89 |
90 |
91 |
92 | 93 |
94 |
BK108X.cpp File Reference
95 |
96 |
97 |
#include <BK108X.h>
98 | #include <Wire.h>
99 |
100 |

Go to the source code of this file.

101 |
102 |
103 | 104 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /extras/docs/html/_b_k108_x_8h.js: -------------------------------------------------------------------------------- 1 | var _b_k108_x_8h = 2 | [ 3 | [ "MAX_DELAY_AFTER_OSCILLATOR", "_b_k108_x_8h.html#afb81dd661d531fa5c5422549fab7588f", null ], 4 | [ "I2C_DEVICE_ADDR", "_b_k108_x_8h.html#af1732013854882f94b02e77b8a6106ec", null ], 5 | [ "MAX_SEEK_TIME", "_b_k108_x_8h.html#acc98e8d3badddd21bc528451bb718f82", null ], 6 | [ "OSCILLATOR_TYPE_CRYSTAL", "_b_k108_x_8h.html#ad0763fd256db4ec1ecc62f84bbff56e2", null ], 7 | [ "OSCILLATOR_TYPE_REFCLK", "_b_k108_x_8h.html#ad079e38ccae2f64aa341332e2ccb8b8e", null ], 8 | [ "RDS_STANDARD", "_b_k108_x_8h.html#a128f40c85c30594203fd937611ba5f2c", null ], 9 | [ "RDS_VERBOSE", "_b_k108_x_8h.html#acdc3372b73fee284997dbef795123257", null ], 10 | [ "BK_SEEK_DOWN", "_b_k108_x_8h.html#a017ece573abf2a972df53a4266b0be4e", null ], 11 | [ "BK_SEEK_UP", "_b_k108_x_8h.html#a8b6fda0c416f414d2f9b94e704b4bb42", null ], 12 | [ "BK_SEEK_WRAP", "_b_k108_x_8h.html#a7d3798980a48b89080f730fdcab13fa3", null ], 13 | [ "BK_SEEK_STOP", "_b_k108_x_8h.html#acaac3081acb27c04e3f8fb159ba831fa", null ], 14 | [ "FM_FULL", "_b_k108_x_8h.html#a68615bfe4d7601a46a6510e9562a1574", null ], 15 | [ "FM_BAND_JAPAN_WIDE", "_b_k108_x_8h.html#a52b160692c66b326ce004ef59a9c7384", null ], 16 | [ "FM_BAND_JAPAN", "_b_k108_x_8h.html#a3e920d475d85c9c6ccd907ba332f94fc", null ], 17 | [ "FM_BAND_USA_EU", "_b_k108_x_8h.html#a7417bf6a10c7dd58227fc91601825691", null ], 18 | [ "AM_LW", "_b_k108_x_8h.html#abb0ffdea9eb5762555dc7b44bd1ef0a2", null ], 19 | [ "AM_MW1", "_b_k108_x_8h.html#aaa688c38f626aa474f1a03ac57cab615", null ], 20 | [ "AM_SW", "_b_k108_x_8h.html#a776a18bb0c4290ced8ada8c123562b36", null ], 21 | [ "AM_M22", "_b_k108_x_8h.html#af39fe24f22250fa188526968cb9ae75a", null ], 22 | [ "BK_MODE_FM", "_b_k108_x_8h.html#af1c4cc5f6cdda1dbb699c5be2ff1bd79", null ], 23 | [ "BK_MODE_AM", "_b_k108_x_8h.html#a3c6f5bce39c59fae7c4f238107d2d289", null ], 24 | [ "DE_EMPHASIS_75", "_b_k108_x_8h.html#a4be511c16b6bb86f88c9993438840d7f", null ], 25 | [ "DE_EMPHASIS_50", "_b_k108_x_8h.html#a620fa26e90cf0ac0645dc2ec73cf42f9", null ], 26 | [ "REG00", "_b_k108_x_8h.html#a748ad53bef975af9c1edbcacc58e5be4", null ], 27 | [ "REG01", "_b_k108_x_8h.html#afc04faecdab9e0d1751466b6c53fdaf1", null ], 28 | [ "REG02", "_b_k108_x_8h.html#a09a3d3fef9f53f0dbe1dd0072f02c1d4", null ], 29 | [ "REG03", "_b_k108_x_8h.html#ac2446f96334b533154259a21c13950e6", null ], 30 | [ "REG04", "_b_k108_x_8h.html#a88dee04c27a51e335798ab012dccbea1", null ], 31 | [ "REG05", "_b_k108_x_8h.html#a848ac333ddfea97bc1f16a2e69eaf953", null ], 32 | [ "REG06", "_b_k108_x_8h.html#ac5641e8e0c3254714bcd533a4b0111ca", null ], 33 | [ "REG07", "_b_k108_x_8h.html#a2a41df49654ae321f569bfabfa74de24", null ], 34 | [ "REG08", "_b_k108_x_8h.html#a96f1c217ac648e08bc64dd3b9086612c", null ], 35 | [ "REG09", "_b_k108_x_8h.html#a48be4d4aa3bde15da7a8145c0f64fd7f", null ], 36 | [ "REG0A", "_b_k108_x_8h.html#a5ec596211175cecd682755f5e996b6dd", null ], 37 | [ "REG0B", "_b_k108_x_8h.html#a76c73d8e23848f8d73679450c2d7264b", null ], 38 | [ "REG0C", "_b_k108_x_8h.html#a0e3b6e600782d453f87223f87784c54d", null ], 39 | [ "REG0D", "_b_k108_x_8h.html#a41b7a4f7b9e629eb87dba4152995a616", null ], 40 | [ "REG0E", "_b_k108_x_8h.html#a1a5322c7bc447986d2d3b4d13de95315", null ], 41 | [ "REG0F", "_b_k108_x_8h.html#a949846d6974a39c871614c2f15ee0691", null ], 42 | [ "REG10", "_b_k108_x_8h.html#a4bfd6b226ed1e9858b3c1e8fc0a4137e", null ], 43 | [ "REG11", "_b_k108_x_8h.html#a96ac68e41626933b41138548318e052b", null ], 44 | [ "REG12", "_b_k108_x_8h.html#a06bf525972f7b47f7683a0c37cfb2a70", null ], 45 | [ "REG13", "_b_k108_x_8h.html#a2c18d898fc24de24b8731e57c6a1924d", null ], 46 | [ "REG14", "_b_k108_x_8h.html#ad34d16e8c104c88c8fb1ce1195cfed14", null ], 47 | [ "REG15", "_b_k108_x_8h.html#a3f7e2fe33fd2114b91fa653ba3fb932b", null ], 48 | [ "REG16", "_b_k108_x_8h.html#a7f2f605c029c5c96fb06ecca2933dc67", null ], 49 | [ "REG17", "_b_k108_x_8h.html#a2d697bfd5ba8d3203a00b1eb40b2bf0f", null ], 50 | [ "REG18", "_b_k108_x_8h.html#ac5d858df6fa437b9e2fdd74ed2bb027a", null ], 51 | [ "REG19", "_b_k108_x_8h.html#a575b918902872d95be6588c9732fd8bd", null ], 52 | [ "REG1A", "_b_k108_x_8h.html#a5eeaea32c870a31999643b68ba6c9cdb", null ], 53 | [ "REG1B", "_b_k108_x_8h.html#a8928c3ceb92de4ff29e682dca2faa85e", null ], 54 | [ "REG1C", "_b_k108_x_8h.html#a615ce0ebc819ed8ea5f84d81e9d3c707", null ], 55 | [ "REG1D", "_b_k108_x_8h.html#a936c7bd27b99a90769f93ec3f004b3e0", null ], 56 | [ "REG1E", "_b_k108_x_8h.html#af9cfc0b147b4d8d30b4d034a5fa389fc", null ], 57 | [ "REG1F", "_b_k108_x_8h.html#a633834d741fc439273084e78de4fd632", null ], 58 | [ "bk_reg1E", "_b_k108_x_8h.html#a13286a0f9a7d77ac48189ff15bb1eda9", null ], 59 | [ "bk_reg1F", "_b_k108_x_8h.html#aa9f1c5ae16ae38884e7f4f7e080ea50d", null ], 60 | [ "bk_reg20", "_b_k108_x_8h.html#aa794b71b9b53b0aad3d7ff0955984e98", null ] 61 | ]; -------------------------------------------------------------------------------- /extras/docs/html/bc_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/bc_s.png -------------------------------------------------------------------------------- /extras/docs/html/bc_sd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/bc_sd.png -------------------------------------------------------------------------------- /extras/docs/html/bdwn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/bdwn.png -------------------------------------------------------------------------------- /extras/docs/html/closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/closed.png -------------------------------------------------------------------------------- /extras/docs/html/dir_22ccd63b32a12b0c19294f50e69a6f91.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | PU2CLR BK108X Arduino Library: BK108X Directory Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 |
24 | 25 | 26 | 27 | 28 | 33 | 34 | 35 |
29 |
PU2CLR BK108X Arduino Library 1.0.2 30 |
31 |
This is an Arduino Library to control the BK108X device
32 |
36 |
37 | 38 | 39 | 44 | 45 | 46 | 54 | 55 |
56 |
57 | 62 |
64 |
65 |
66 | 71 |
72 | 73 |
77 |
78 | 79 | 80 |
81 |
82 |
83 |
84 |
85 |
Loading...
86 |
Searching...
87 |
No Matches
88 |
89 |
90 |
91 |
92 | 93 |
94 |
BK108X Directory Reference
95 |
96 |
97 | 98 | 100 | 101 | 102 |

99 | Directories

directory  src
 
103 |
104 |
105 | 106 | 112 | 113 | 114 | -------------------------------------------------------------------------------- /extras/docs/html/dir_22ccd63b32a12b0c19294f50e69a6f91.js: -------------------------------------------------------------------------------- 1 | var dir_22ccd63b32a12b0c19294f50e69a6f91 = 2 | [ 3 | [ "src", "dir_4d05ee8c91c3ddb199e26821c70d0061.html", "dir_4d05ee8c91c3ddb199e26821c70d0061" ] 4 | ]; -------------------------------------------------------------------------------- /extras/docs/html/dir_4d05ee8c91c3ddb199e26821c70d0061.js: -------------------------------------------------------------------------------- 1 | var dir_4d05ee8c91c3ddb199e26821c70d0061 = 2 | [ 3 | [ "BK108X.cpp", "_b_k108_x_8cpp.html", null ], 4 | [ "BK108X.h", "_b_k108_x_8h.html", "_b_k108_x_8h" ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/doc.png -------------------------------------------------------------------------------- /extras/docs/html/docd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/docd.png -------------------------------------------------------------------------------- /extras/docs/html/dynsections.js: -------------------------------------------------------------------------------- 1 | /* 2 | @licstart The following is the entire license notice for the JavaScript code in this file. 3 | 4 | The MIT License (MIT) 5 | 6 | Copyright (C) 1997-2020 by Dimitri van Heesch 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software 9 | and associated documentation files (the "Software"), to deal in the Software without restriction, 10 | including without limitation the rights to use, copy, modify, merge, publish, distribute, 11 | sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all copies or 15 | substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 18 | BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 20 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | 23 | @licend The above is the entire license notice for the JavaScript code in this file 24 | */ 25 | function toggleVisibility(linkObj) 26 | { 27 | var base = $(linkObj).attr('id'); 28 | var summary = $('#'+base+'-summary'); 29 | var content = $('#'+base+'-content'); 30 | var trigger = $('#'+base+'-trigger'); 31 | var src=$(trigger).attr('src'); 32 | if (content.is(':visible')===true) { 33 | content.hide(); 34 | summary.show(); 35 | $(linkObj).addClass('closed').removeClass('opened'); 36 | $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); 37 | } else { 38 | content.show(); 39 | summary.hide(); 40 | $(linkObj).removeClass('closed').addClass('opened'); 41 | $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); 42 | } 43 | return false; 44 | } 45 | 46 | function updateStripes() 47 | { 48 | $('table.directory tr'). 49 | removeClass('even').filter(':visible:even').addClass('even'); 50 | $('table.directory tr'). 51 | removeClass('odd').filter(':visible:odd').addClass('odd'); 52 | } 53 | 54 | function toggleLevel(level) 55 | { 56 | $('table.directory tr').each(function() { 57 | var l = this.id.split('_').length-1; 58 | var i = $('#img'+this.id.substring(3)); 59 | var a = $('#arr'+this.id.substring(3)); 60 | if (l 2 | 3 | 4 | 5 | 6 | 7 | 8 | PU2CLR BK108X Arduino Library: File Members 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 |
24 | 25 | 26 | 27 | 28 | 33 | 34 | 35 |
29 |
PU2CLR BK108X Arduino Library 1.0.2 30 |
31 |
This is an Arduino Library to control the BK108X device
32 |
36 |
37 | 38 | 39 | 44 | 45 | 46 | 54 | 55 |
56 |
57 | 62 |
64 |
65 |
66 | 71 |
72 | 73 |
77 |
78 | 79 | 80 |
81 |
82 |
83 |
84 |
85 |
Loading...
86 |
Searching...
87 |
No Matches
88 |
89 |
90 |
91 |
92 | 93 |
94 |   99 |
100 |
101 | 102 | 107 | 108 | 109 | -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__rds__blockb_8group0.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__rds__blockb_8group0 = 2 | [ 3 | [ "address", "group___g_a01.html#a884d9804999fc47a3c2694e49ad2536a", null ], 4 | [ "DI", "group___g_a01.html#aa1b1c0cd777edd2e5cfcaf8e2e7dcab8", null ], 5 | [ "MS", "group___g_a01.html#a7a663caea1b722a63dc2868158ed584d", null ], 6 | [ "TA", "group___g_a01.html#a890a10788493e3d572586e991cd43543", null ], 7 | [ "programType", "group___g_a01.html#a264bd2c2ca8c895803767b0d39ff4a09", null ], 8 | [ "trafficProgramCode", "group___g_a01.html#a59e69d63ce38754ea53c4461b5cba1e2", null ], 9 | [ "versionCode", "group___g_a01.html#a20583dcf173525a78f726ef45329c5ae", null ], 10 | [ "groupType", "group___g_a01.html#a19223bd3731a4215ead3ba6a1eb8bbe8", null ] 11 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__rds__blockb_8group2.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__rds__blockb_8group2 = 2 | [ 3 | [ "address", "group___g_a01.html#a884d9804999fc47a3c2694e49ad2536a", null ], 4 | [ "textABFlag", "group___g_a01.html#a652bfdc159637b708ac6e6f92d7650bc", null ], 5 | [ "programType", "group___g_a01.html#a264bd2c2ca8c895803767b0d39ff4a09", null ], 6 | [ "trafficProgramCode", "group___g_a01.html#a59e69d63ce38754ea53c4461b5cba1e2", null ], 7 | [ "versionCode", "group___g_a01.html#a20583dcf173525a78f726ef45329c5ae", null ], 8 | [ "groupType", "group___g_a01.html#a19223bd3731a4215ead3ba6a1eb8bbe8", null ] 9 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__rds__blockb_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__rds__blockb_8refined = 2 | [ 3 | [ "content", "group___g_a01.html#a9a0364b9e99bb480dd25e1f0284c8555", null ], 4 | [ "textABFlag", "group___g_a01.html#a652bfdc159637b708ac6e6f92d7650bc", null ], 5 | [ "programType", "group___g_a01.html#a264bd2c2ca8c895803767b0d39ff4a09", null ], 6 | [ "trafficProgramCode", "group___g_a01.html#a59e69d63ce38754ea53c4461b5cba1e2", null ], 7 | [ "versionCode", "group___g_a01.html#a20583dcf173525a78f726ef45329c5ae", null ], 8 | [ "groupType", "group___g_a01.html#a19223bd3731a4215ead3ba6a1eb8bbe8", null ] 9 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__rds__date__time_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__rds__date__time_8refined = 2 | [ 3 | [ "offset", "group___g_a01.html#a7a86c157ee9713c34fbd7a1ee40f0c5a", null ], 4 | [ "offset_sense", "group___g_a01.html#a5ba6e404c489ff4f757e7c77cb9fa310", null ], 5 | [ "minute", "group___g_a01.html#a0a7d55be9d12a369a6a8da0fb517fba4", null ], 6 | [ "hour", "group___g_a01.html#a896c55cc5e46fab38ce9f51ebf7bfcd3", null ], 7 | [ "mjd", "group___g_a01.html#a7f7685b39180278dd0fa69f523c7bd24", null ] 8 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg00_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg00_8refined = 2 | [ 3 | [ "lowByte", "group___g_a01.html#a51ab88497cad20027df936afa223b23d", null ], 4 | [ "highByte", "group___g_a01.html#a7b99e4a5dc723242645ede8c604610df", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg01_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg01_8refined = 2 | [ 3 | [ "lowByte", "group___g_a01.html#a51ab88497cad20027df936afa223b23d", null ], 4 | [ "highByte", "group___g_a01.html#a7b99e4a5dc723242645ede8c604610df", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg02_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg02_8refined = 2 | [ 3 | [ "ENABLE", "group___g_a01.html#ab332708e4304e13c9b424e7465254954", null ], 4 | [ "SNR_REF", "group___g_a01.html#a29bf3fb9cd84857c6397a35c74a29736", null ], 5 | [ "DISABLE", "group___g_a01.html#afc93ea58f6d27ffed2b6518ffecf3e4e", null ], 6 | [ "SKAFCRL", "group___g_a01.html#a2e7086647714013c8d8951cdf8d5c1a3", null ], 7 | [ "SEEK", "group___g_a01.html#a71fa98cecf9e896e77d11325dbe19dc6", null ], 8 | [ "SEEKUP", "group___g_a01.html#aed8a1fd68dec9364930b51d020ba07d6", null ], 9 | [ "SKMODE", "group___g_a01.html#a3afc70c9a6693899b152ca51a42f07b7", null ], 10 | [ "STEREO", "group___g_a01.html#a830dff3c27992cca35a4b46282e10530", null ], 11 | [ "MONO", "group___g_a01.html#af5f75f1b95652443e4398974b82c3f7c", null ], 12 | [ "MUTER", "group___g_a01.html#adef6c10791c32c5eac1fb4465dc61d16", null ], 13 | [ "MUTEL", "group___g_a01.html#a8b5fd825878e1f35d38214f9ec47a329", null ], 14 | [ "DSMUTE", "group___g_a01.html#a2c29ac0910f16c2e2668e5c2fa01be87", null ] 15 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg03_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg03_8refined = 2 | [ 3 | [ "CHAN", "group___g_a01.html#adf21771052967392286eeab054755423", null ], 4 | [ "TUNE", "group___g_a01.html#a05069c0e15b79590b44ff985487037b7", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg04_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg04_8refined = 2 | [ 3 | [ "DUMMY", "group___g_a01.html#abd2103035a8021942390a78a431ba0c4", null ], 4 | [ "GPIO2", "group___g_a01.html#ac8715973930ed16be4d52340ef11181b", null ], 5 | [ "GPIO3", "group___g_a01.html#af2d579fe9d83fc7fe6f55c570c02af38", null ], 6 | [ "PILOTS", "group___g_a01.html#a9323bf4b36b03c9f8de9037e19db23aa", null ], 7 | [ "TCPILOT", "group___g_a01.html#a6e0a7ae2ecc26d68c855b13bf12ae2f2", null ], 8 | [ "DE", "group___g_a01.html#a3a52f3c22ed6fcde5bf696a6c02c9e73", null ], 9 | [ "RDSEN", "group___g_a01.html#af06feb780d38d7dc59d42878a3353c7f", null ], 10 | [ "AFCINV", "group___g_a01.html#ae86fe4bd39d031d20926d138b504e530", null ], 11 | [ "STCIEN", "group___g_a01.html#ab09bf67829bc4d5914945a87be624698", null ], 12 | [ "RDSIEN", "group___g_a01.html#a3a8446a4e8c38de91d77cfbd4ac385c9", null ] 13 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg05_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg05_8refined = 2 | [ 3 | [ "VOLUME", "group___g_a01.html#a730956af87021c351084317bbc63eea6", null ], 4 | [ "SPACE", "group___g_a01.html#a6506ae39fdca9845e3a6de3865183e57", null ], 5 | [ "BAND", "group___g_a01.html#aa8a5bbeedca093b94b7f0d3f185b98f7", null ], 6 | [ "SEEKTH", "group___g_a01.html#a991f75a1bf4d56192acecdf31ad3db47", null ] 7 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg06_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg06_8refined = 2 | [ 3 | [ "SKCNT", "group___g_a01.html#aa8fc45ef83e3d988d30d6c9eb3fd0d85", null ], 4 | [ "SKSNR", "group___g_a01.html#a1e93209bd9a5874f3e90477fff0d01e3", null ], 5 | [ "CLKSEL", "group___g_a01.html#a02aaf77674543c27767fa8bf0690438f", null ], 6 | [ "SMUTEA", "group___g_a01.html#a782739a830fd256ba3140eb7a4c520a4", null ], 7 | [ "SMUTER", "group___g_a01.html#a8ef471dbb0e593fa371a742b26f52656", null ] 8 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg07_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg07_8refined = 2 | [ 3 | [ "FMGAIN", "group___g_a01.html#a70be2521ab8dadb936c671292f10f622", null ], 4 | [ "RESERVED", "group___g_a01.html#a83c7f2aa8c3ac10ed8beb75cad162827", null ], 5 | [ "STHYS_SEL", "group___g_a01.html#abda838752cde4b6a69828ea2d834c597", null ], 6 | [ "DACCK_SEL", "group___g_a01.html#ae1150a67ed377511b93b85918aa390e3", null ], 7 | [ "IMPTH", "group___g_a01.html#a4f63b1e72a7bfa48c6f3385d1c73eeb3", null ], 8 | [ "BPDE", "group___g_a01.html#af4389da8402e8a0f3fe235035482ecd3", null ], 9 | [ "IMPEN", "group___g_a01.html#acd9660564580fc4e73bffe3af88ae9fc", null ], 10 | [ "SIQ", "group___g_a01.html#ae5866950ac44e43db0ba9ee7508afed7", null ], 11 | [ "MODE", "group___g_a01.html#ab742db58b16f1d7de716d5e8a8afabbb", null ], 12 | [ "LINEIN_EN", "group___g_a01.html#a86b05912b32e8b631bc2ebe97ac07131", null ], 13 | [ "LINEIN_SEL", "group___g_a01.html#a847b953977dd914b72d933d6c9bc3f9d", null ] 14 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg08_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg08_8refined = 2 | [ 3 | [ "AFCRSSIT", "group___g_a01.html#ab7c49fbcf6e13a9adf1ef73a45e696b2", null ], 4 | [ "RANGE", "group___g_a01.html#a01036ddcc971d02f6c32c3da31a119f2", null ], 5 | [ "VAR", "group___g_a01.html#ad6f4440b8633f973d33c78928bdac2e1", null ], 6 | [ "AVE", "group___g_a01.html#aca6d38eb64146b17707f02a5ef527e25", null ], 7 | [ "SEL25K", "group___g_a01.html#a14a15bf879c8a6c4f871f04818116b75", null ], 8 | [ "TCSEL", "group___g_a01.html#a9a5aa1926fa09f0a262549ab3fd8a8f7", null ], 9 | [ "AFCEN", "group___g_a01.html#acd4dc69a843a2266bfe2b47fcd0993b8", null ] 10 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg09_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg09_8refined = 2 | [ 3 | [ "SNR", "group___g_a01.html#a8dc5367d65459f69d78eb03e93f7703f", null ], 4 | [ "AFC", "group___g_a01.html#ab3ba8c7adfb0e850599c37e497312f63", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg0a_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg0a_8refined = 2 | [ 3 | [ "RSSI", "group___g_a01.html#a6833f5d3374c1679bea428b50dbad9cc", null ], 4 | [ "ST", "group___g_a01.html#aec8e57d71f07e31203035548b79d03c8", null ], 5 | [ "STEN", "group___g_a01.html#ad2249718386b0f509e67411b6bbcf37f", null ], 6 | [ "DUMMY", "group___g_a01.html#abd2103035a8021942390a78a431ba0c4", null ], 7 | [ "AFCRL", "group___g_a01.html#a4f37d8e1a484e1ac152858e71923f86c", null ], 8 | [ "SF_BL", "group___g_a01.html#a2b31e70c6afaef56b6f30b2f50cccca4", null ], 9 | [ "STC", "group___g_a01.html#a3a247d1d806ebfcd27b09041e3186b4e", null ], 10 | [ "RDSR", "group___g_a01.html#accd030164321bb71a36d491b2e6cd424", null ] 11 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg0b_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg0b_8refined = 2 | [ 3 | [ "READCHAN", "group___g_a01.html#abe63df93c3d4af07359a55d5902f0f7a", null ], 4 | [ "RESERVED", "group___g_a01.html#a83c7f2aa8c3ac10ed8beb75cad162827", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg0c_8rds__status.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg0c_8rds__status = 2 | [ 3 | [ "BLERB", "group___g_a01.html#abf73094dcea591929f5c4ffe912d6750", null ], 4 | [ "BLERA", "group___g_a01.html#a5cf5d2b056255cb2235ce6c52c0e9795", null ], 5 | [ "ABCD_E", "group___g_a01.html#a297000d9caac4f06fe67d8972202b2f8", null ], 6 | [ "DUMMY", "group___g_a01.html#abd2103035a8021942390a78a431ba0c4", null ], 7 | [ "FM_READY", "group___g_a01.html#a7b86ad4e3ff3b175ed1b73968c43140f", null ], 8 | [ "FM_TRUE", "group___g_a01.html#aa792520704f786ade70d6a06b6b8ba34", null ], 9 | [ "RSSI", "group___g_a01.html#a6833f5d3374c1679bea428b50dbad9cc", null ] 10 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg0c_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg0c_8refined = 2 | [ 3 | [ "lowByte", "group___g_a01.html#a51ab88497cad20027df936afa223b23d", null ], 4 | [ "highByte", "group___g_a01.html#a7b99e4a5dc723242645ede8c604610df", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg0d_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg0d_8refined = 2 | [ 3 | [ "lowByte", "group___g_a01.html#a51ab88497cad20027df936afa223b23d", null ], 4 | [ "highByte", "group___g_a01.html#a7b99e4a5dc723242645ede8c604610df", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg0e_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg0e_8refined = 2 | [ 3 | [ "lowByte", "group___g_a01.html#a51ab88497cad20027df936afa223b23d", null ], 4 | [ "highByte", "group___g_a01.html#a7b99e4a5dc723242645ede8c604610df", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg0f_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg0f_8refined = 2 | [ 3 | [ "lowByte", "group___g_a01.html#a51ab88497cad20027df936afa223b23d", null ], 4 | [ "highByte", "group___g_a01.html#a7b99e4a5dc723242645ede8c604610df", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg10_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg10_8refined = 2 | [ 3 | [ "lowByte", "group___g_a01.html#a51ab88497cad20027df936afa223b23d", null ], 4 | [ "highByte", "group___g_a01.html#a7b99e4a5dc723242645ede8c604610df", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg11_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg11_8refined = 2 | [ 3 | [ "lowByte", "group___g_a01.html#a51ab88497cad20027df936afa223b23d", null ], 4 | [ "highByte", "group___g_a01.html#a7b99e4a5dc723242645ede8c604610df", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg12_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg12_8refined = 2 | [ 3 | [ "lowByte", "group___g_a01.html#a51ab88497cad20027df936afa223b23d", null ], 4 | [ "highByte", "group___g_a01.html#a7b99e4a5dc723242645ede8c604610df", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg13_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg13_8refined = 2 | [ 3 | [ "lowByte", "group___g_a01.html#a51ab88497cad20027df936afa223b23d", null ], 4 | [ "highByte", "group___g_a01.html#a7b99e4a5dc723242645ede8c604610df", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg14_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg14_8refined = 2 | [ 3 | [ "RSSIMTH", "group___g_a01.html#a3c5f57154d83a34cc2a3ea1e364ad1e5", null ], 4 | [ "SNRMTH", "group___g_a01.html#a861ca2b040be9a9a5f09fd5da80667bf", null ], 5 | [ "AFCMUTE", "group___g_a01.html#a00994146225132c04a59c35b00b3461c", null ], 6 | [ "SKMUTE", "group___g_a01.html#ab0b7991c24754b1b02d33529e61089ab", null ] 7 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg15_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg15_8refined = 2 | [ 3 | [ "lowByte", "group___g_a01.html#a51ab88497cad20027df936afa223b23d", null ], 4 | [ "highByte", "group___g_a01.html#a7b99e4a5dc723242645ede8c604610df", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg16_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg16_8refined = 2 | [ 3 | [ "lowByte", "group___g_a01.html#a51ab88497cad20027df936afa223b23d", null ], 4 | [ "highByte", "group___g_a01.html#a7b99e4a5dc723242645ede8c604610df", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg17_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg17_8refined = 2 | [ 3 | [ "lowByte", "group___g_a01.html#a51ab88497cad20027df936afa223b23d", null ], 4 | [ "highByte", "group___g_a01.html#a7b99e4a5dc723242645ede8c604610df", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg18_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg18_8refined = 2 | [ 3 | [ "lowByte", "group___g_a01.html#a51ab88497cad20027df936afa223b23d", null ], 4 | [ "highByte", "group___g_a01.html#a7b99e4a5dc723242645ede8c604610df", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg19_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg19_8refined = 2 | [ 3 | [ "lowByte", "group___g_a01.html#a51ab88497cad20027df936afa223b23d", null ], 4 | [ "highByte", "group___g_a01.html#a7b99e4a5dc723242645ede8c604610df", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg1_a_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg1_a_8refined = 2 | [ 3 | [ "RESERVED1", "group___g_a01.html#ad8179a090910d4923b044cbce813c8ea", null ], 4 | [ "ANT_SEL", "group___g_a01.html#a9b9357128833e70e06bee6a748592b72", null ], 5 | [ "RESERVED2", "group___g_a01.html#a0b5885d29a74762639e4b55c51ce2d85", null ] 6 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg1_b_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg1_b_8refined = 2 | [ 3 | [ "RESERVED", "group___g_a01.html#a83c7f2aa8c3ac10ed8beb75cad162827", null ] 4 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg1_c_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg1_c_8refined = 2 | [ 3 | [ "RESERVED", "group___g_a01.html#a83c7f2aa8c3ac10ed8beb75cad162827", null ], 4 | [ "FREQ_SEL", "group___g_a01.html#ac279a2ae488147fc31abb73f59163f40", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structbk__reg1_d_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structbk__reg1_d_8refined = 2 | [ 3 | [ "FREQ_SEL", "group___g_a01.html#ac279a2ae488147fc31abb73f59163f40", null ] 4 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_structword16__to__bytes_8refined.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_structword16__to__bytes_8refined = 2 | [ 3 | [ "lowByte", "group___g_a01.html#a51ab88497cad20027df936afa223b23d", null ], 4 | [ "highByte", "group___g_a01.html#a7b99e4a5dc723242645ede8c604610df", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__rds__blockb.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__rds__blockb = 2 | [ 3 | [ "group0", "group___g_a01.html#a14e997232888e2a94a6adfec0300e046", null ], 4 | [ "group2", "group___g_a01.html#af8b387e92a4643b1673bb4d50eae3ccd", null ], 5 | [ "refined", "group___g_a01.html#aa260108fb6c32c50da7a7d8e40a91e12", null ], 6 | [ "blockB", "group___g_a01.html#a4ad8e1545e3c5762fbc9932e4bb434e0", null ] 7 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__rds__date__time.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__rds__date__time = 2 | [ 3 | [ "refined", "group___g_a01.html#aa0654c487312df994725cee01eed98e9", null ], 4 | [ "raw", "group___g_a01.html#a748567ab5765ae2fb449c06989d17148", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg00.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg00 = 2 | [ 3 | [ "refined", "group___g_a01.html#a99f77c038d0e7b397fa6226deef56ade", null ], 4 | [ "deviceId", "group___g_a01.html#a5f8e8adbb251053157b4a51d2a38d6bb", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg01.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg01 = 2 | [ 3 | [ "refined", "group___g_a01.html#a5f5cad6afd6417e8ba514112194c6f81", null ], 4 | [ "chipId", "group___g_a01.html#a76d151d53814f303d62a9b81554f9faf", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg02.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg02 = 2 | [ 3 | [ "refined", "group___g_a01.html#a82d694b1091fa135e49955057d53c31a", null ], 4 | [ "raw", "group___g_a01.html#a77efa9699ea88017b19ffe19fb6cddf9", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg03.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg03 = 2 | [ 3 | [ "refined", "group___g_a01.html#a7357d76f1b5015477be8d85c5c7d5586", null ], 4 | [ "raw", "group___g_a01.html#af9d14bb9dcf7e7a64254d2258a53109d", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg04.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg04 = 2 | [ 3 | [ "refined", "group___g_a01.html#a52a94d5bfdb3d370735559c823e1673f", null ], 4 | [ "raw", "group___g_a01.html#acdfa2eb9b5293bfb1553b08ebeca4d5c", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg05.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg05 = 2 | [ 3 | [ "refined", "group___g_a01.html#a4eeac1a6afc42b6e45f280489ab168ed", null ], 4 | [ "raw", "group___g_a01.html#a919e8daf2759f6f0ebac17be47e4f851", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg06.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg06 = 2 | [ 3 | [ "refined", "group___g_a01.html#ab3936dfdcad84edccb0d41f9a24c136f", null ], 4 | [ "raw", "group___g_a01.html#ae32d72a18e11548b243af112ffa0e794", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg07.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg07 = 2 | [ 3 | [ "refined", "group___g_a01.html#a27a7bdfd5c268b1d09efbba2898a4ca4", null ], 4 | [ "raw", "group___g_a01.html#af3bf0c52834c4574eaf01dc9a0f18bc7", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg08.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg08 = 2 | [ 3 | [ "refined", "group___g_a01.html#a3568a3906b8e813b90bd79cc4615ae01", null ], 4 | [ "raw", "group___g_a01.html#adb6996f6483f952de58994c5509c5a94", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg09.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg09 = 2 | [ 3 | [ "refined", "group___g_a01.html#acfd217fe374016cbe67934db21582221", null ], 4 | [ "raw", "group___g_a01.html#aa2cf705fd1bc75fa17a0e4e2baa6b1f4", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg0a.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg0a = 2 | [ 3 | [ "refined", "group___g_a01.html#ac87ccf3a17f67c91c62d236091ea3761", null ], 4 | [ "raw", "group___g_a01.html#a078abfa3fe133d63491859bfa4aa64ef", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg0b.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg0b = 2 | [ 3 | [ "refined", "group___g_a01.html#a1715dff39a9c77406cdabfa077b07143", null ], 4 | [ "raw", "group___g_a01.html#a58e14a32efef6b9dd0b3c1451f883f2f", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg0c.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg0c = 2 | [ 3 | [ "rds_status", "group___g_a01.html#a3b8af7b818ff092e549e9b9a425314ce", null ], 4 | [ "refined", "group___g_a01.html#acde809a75a12187ad2ef85401a3e0571", null ], 5 | [ "raw", "group___g_a01.html#a3f9e7bdb65db4a0e05ae2672536a9abb", null ] 6 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg0d.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg0d = 2 | [ 3 | [ "refined", "group___g_a01.html#a959c77804bacb619b7df8c37323b7bb8", null ], 4 | [ "raw", "group___g_a01.html#aff858f8f70b292ba7a6d6b83d876378c", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg0e.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg0e = 2 | [ 3 | [ "refined", "group___g_a01.html#ac37abd0b25b8117812a393242d5f02c7", null ], 4 | [ "raw", "group___g_a01.html#ae6ca00fd612c7eb38e254b69992f2665", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg0f.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg0f = 2 | [ 3 | [ "refined", "group___g_a01.html#acf4da2d9e300633a105e145642715a73", null ], 4 | [ "raw", "group___g_a01.html#ab252d9e467b66502d065ebdbe6bb14d5", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg10.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg10 = 2 | [ 3 | [ "refined", "group___g_a01.html#a0b91e5371bf09aabe2c9533e7c9cddce", null ], 4 | [ "raw", "group___g_a01.html#a618d078873d535ceb82d33119bd7912c", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg11.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg11 = 2 | [ 3 | [ "refined", "group___g_a01.html#af1f609c18e93ffda868e823a74e9ea96", null ], 4 | [ "raw", "group___g_a01.html#a0d882be5009d4770b3bf0499357bdda6", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg12.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg12 = 2 | [ 3 | [ "refined", "group___g_a01.html#a7a081e0d8803e453a62d95359cacf55d", null ], 4 | [ "raw", "group___g_a01.html#a47d961379a606e82aca8b61e12aecbe2", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg13.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg13 = 2 | [ 3 | [ "refined", "group___g_a01.html#a3bc4f411d5c15f05f8320942f4317900", null ], 4 | [ "raw", "group___g_a01.html#ac60eeae0dfd9ab51e5f95325a07c32fd", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg14.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg14 = 2 | [ 3 | [ "refined", "group___g_a01.html#af4d33ade4a6c5a987b22ce80db169fe3", null ], 4 | [ "raw", "group___g_a01.html#a21a5cd743b5911e43b0769d877619133", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg15.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg15 = 2 | [ 3 | [ "refined", "group___g_a01.html#a5d1ea926bae2db4117016ea928a3f2ab", null ], 4 | [ "raw", "group___g_a01.html#a44083d0ac834ea50d1e8705458fe00da", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg16.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg16 = 2 | [ 3 | [ "refined", "group___g_a01.html#a1ffb350719e04914ebddde12a8af037e", null ], 4 | [ "raw", "group___g_a01.html#ada69a2169ff67b141152c6e470466677", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg17.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg17 = 2 | [ 3 | [ "refined", "group___g_a01.html#a504e24340fec62b00e3d617d75abacac", null ], 4 | [ "raw", "group___g_a01.html#aba01df5acdc7f3a58b824601b6678a77", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg18.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg18 = 2 | [ 3 | [ "refined", "group___g_a01.html#aa389bd9640fe68274b5f4cdcdb0e31fb", null ], 4 | [ "raw", "group___g_a01.html#a1082bdeb66e21129976865bfaf3ff3f6", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg19.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg19 = 2 | [ 3 | [ "refined", "group___g_a01.html#a912d465ad94c01b30fd308b9e6514a6b", null ], 4 | [ "raw", "group___g_a01.html#ac6abd157ca23e77266e565517d24eda5", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg1_a.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg1_a = 2 | [ 3 | [ "refined", "group___g_a01.html#a50464a0024bdb62c311e596ec8af9d69", null ], 4 | [ "raw", "group___g_a01.html#a3fdb8fcabad060457b50bc35b183eeb5", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg1_b.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg1_b = 2 | [ 3 | [ "refined", "group___g_a01.html#a92baa0322080361cdc14eb2bcdd21d00", null ], 4 | [ "raw", "group___g_a01.html#a005cbfaaf541782a74a5041a8bf85e81", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg1_c.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg1_c = 2 | [ 3 | [ "refined", "group___g_a01.html#ab88917c1da239048f9472506f968ee06", null ], 4 | [ "raw", "group___g_a01.html#ac5e122178e31b7309bd40309fbc89f59", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionbk__reg1_d.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionbk__reg1_d = 2 | [ 3 | [ "refined", "group___g_a01.html#ace3bfb54a165652734af9a7adf1336aa", null ], 4 | [ "raw", "group___g_a01.html#a2a23be41d7ed8653fc88a5dacd455262", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a01_unionword16__to__bytes.js: -------------------------------------------------------------------------------- 1 | var group___g_a01_unionword16__to__bytes = 2 | [ 3 | [ "refined", "group___g_a01.html#a7b68ce3f07065171b24fce68c87038e1", null ], 4 | [ "raw", "group___g_a01.html#abed44166b8c3d82c0c44fb317d3b650a", null ] 5 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a02.js: -------------------------------------------------------------------------------- 1 | var group___g_a02 = 2 | [ 3 | [ "BK108X::setI2C", "group___g_a02.html#gabb521f2af588ce1c94755bd2525f32c9", null ], 4 | [ "BK108X::i2cInit", "group___g_a02.html#gafbe95dfa30734cd6c30f5d6ea77089c9", null ], 5 | [ "BK108X::i2cBeginTransaction", "group___g_a02.html#ga964d94010afe620e87a01f347bc55196", null ], 6 | [ "BK108X::i2cEndTransaction", "group___g_a02.html#ga9a1baa9e95b4c25a6bb7cfb00baebfbd", null ], 7 | [ "BK108X::i2cAck", "group___g_a02.html#gaf3c1f7226ebb99d7b7aa2e0c58d166db", null ], 8 | [ "BK108X::i2cNack", "group___g_a02.html#gab7987984a7302ba985689c6cec95f833", null ], 9 | [ "BK108X::i2cReceiveAck", "group___g_a02.html#ga00ccd956af8470ccc32a18b476dda0c2", null ], 10 | [ "BK108X::i2cWriteByte", "group___g_a02.html#ga9f97140ef586e3fbf52b482bfae94d9c", null ], 11 | [ "BK108X::i2cReadByte", "group___g_a02.html#ga2d7a8606874d174e6fdb66d9ef602811", null ], 12 | [ "BK108X::writeRegister", "group___g_a02.html#gaaa412587cacee78fdb6da296d97c9c74", null ], 13 | [ "BK108X::readRegister", "group___g_a02.html#ga6521ba6b192db9370203d6672178d47e", null ] 14 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a04.js: -------------------------------------------------------------------------------- 1 | var group___g_a04 = 2 | [ 3 | [ "BK108X::getRdsProgramInformation", "group___g_a04.html#gaa749da139e196b13efe6977e3d1a811d", null ], 4 | [ "BK108X::getRdsStationInformation", "group___g_a04.html#ga254ac994c1ae20891387ffd66fa8680a", null ], 5 | [ "BK108X::getRdsStationName", "group___g_a04.html#ga4c3e22b1a3565d0ce22cd07c5c840205", null ], 6 | [ "BK108X::setRdsMode", "group___g_a04.html#gadb237cc8ad191804af5de514a5610fd9", null ], 7 | [ "BK108X::setRds", "group___g_a04.html#gae34ef5e3d69ef41522b611dcc3ce14a0", null ], 8 | [ "BK108X::getRdsReady", "group___g_a04.html#ga1fb9b7d09968c248624c9c9c3aa3b307", null ], 9 | [ "BK108X::getRdsFlagAB", "group___g_a04.html#ga8be7187079334991c12934087e7d826c", null ], 10 | [ "BK108X::getRdsGroupType", "group___g_a04.html#ga88ee370deb58d65deee0e8e159507758", null ], 11 | [ "BK108X::getRdsVersionCode", "group___g_a04.html#ga4693aebc8f2c479df966746d42374bf6", null ], 12 | [ "BK108X::getRdsProgramType", "group___g_a04.html#ga8dafdca0cc93acecacfd3231af8aba1e", null ], 13 | [ "BK108X::getNext2Block", "group___g_a04.html#ga9604c12896a554660d5cef45a1f8d940", null ], 14 | [ "BK108X::getNext4Block", "group___g_a04.html#ga395af9273883205883c5ca87776877cd", null ], 15 | [ "BK108X::getRdsText", "group___g_a04.html#ga29cf3c40f585f958c3a00836d438e94a", null ], 16 | [ "BK108X::getRdsText0A", "group___g_a04.html#ga045825c54358c0bc1e741889a14a8a32", null ], 17 | [ "BK108X::getRdsText2A", "group___g_a04.html#gaa45a715a465a77143dc7d300d6a3192f", null ], 18 | [ "BK108X::getRdsText2B", "group___g_a04.html#ga2f9f668c6a689276d486fe0c0871086c", null ], 19 | [ "BK108X::getRdsAllData", "group___g_a04.html#ga5ee4c3a85508799204ed17fb84856fdb", null ], 20 | [ "BK108X::getRdsTime", "group___g_a04.html#ga6c0f7231f5c0b02185f5f3ad847364a4", null ], 21 | [ "BK108X::getRdsLocalTime", "group___g_a04.html#gaebab6fd2a2af03b6a05991dad7b8ab35", null ], 22 | [ "BK108X::getRdsSync", "group___g_a04.html#gace7a6e83ef173bcf9e26b129df416c9c", null ], 23 | [ "BK108X::clearRdsBuffer", "group___g_a04.html#gab4df6a9ab8f9ea2b4ec0878fd49b99a1", null ] 24 | ]; -------------------------------------------------------------------------------- /extras/docs/html/group___g_a05.js: -------------------------------------------------------------------------------- 1 | var group___g_a05 = 2 | [ 3 | [ "BK108X::formatFrequency", "group___g_a05.html#ga8209b9f2545c2c661fab9099061f753a", null ], 4 | [ "BK108X::formatCurrentFrequency", "group___g_a05.html#ga12955f9e667d323153b10d48f4b50843", null ], 5 | [ "BK108X::checkI2C", "group___g_a05.html#ga94349ed646b59d42fe4c771e273df737", null ], 6 | [ "BK108X::getRegisterValues", "group___g_a05.html#ga76cc0d91aab1701220c080349d7717d8", null ], 7 | [ "BK108X::convertToChar", "group___g_a05.html#ga2ab717229791f3d3994f10717fb3c703", null ] 8 | ]; -------------------------------------------------------------------------------- /extras/docs/html/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/logo.png -------------------------------------------------------------------------------- /extras/docs/html/menudata.js: -------------------------------------------------------------------------------- 1 | /* 2 | @licstart The following is the entire license notice for the JavaScript code in this file. 3 | 4 | The MIT License (MIT) 5 | 6 | Copyright (C) 1997-2020 by Dimitri van Heesch 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software 9 | and associated documentation files (the "Software"), to deal in the Software without restriction, 10 | including without limitation the rights to use, copy, modify, merge, publish, distribute, 11 | sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all copies or 15 | substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 18 | BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 20 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | 23 | @licend The above is the entire license notice for the JavaScript code in this file 24 | */ 25 | var menudata={children:[ 26 | {text:"Main Page",url:"index.html"}, 27 | {text:"Related Pages",url:"pages.html"}, 28 | {text:"Modules",url:"modules.html"}, 29 | {text:"Classes",url:"annotated.html",children:[ 30 | {text:"Class List",url:"annotated.html"}, 31 | {text:"Class Index",url:"classes.html"}, 32 | {text:"Class Members",url:"functions.html",children:[ 33 | {text:"All",url:"functions.html",children:[ 34 | {text:"a",url:"functions.html#index_a"}, 35 | {text:"b",url:"functions.html#index_b"}, 36 | {text:"c",url:"functions.html#index_c"}, 37 | {text:"d",url:"functions.html#index_d"}, 38 | {text:"f",url:"functions.html#index_f"}, 39 | {text:"g",url:"functions.html#index_g"}, 40 | {text:"i",url:"functions.html#index_i"}, 41 | {text:"m",url:"functions.html#index_m"}, 42 | {text:"o",url:"functions.html#index_o"}, 43 | {text:"p",url:"functions.html#index_p"}, 44 | {text:"r",url:"functions.html#index_r"}, 45 | {text:"s",url:"functions.html#index_s"}, 46 | {text:"w",url:"functions.html#index_w"}]}, 47 | {text:"Functions",url:"functions_func.html",children:[ 48 | {text:"a",url:"functions_func.html#index_a"}, 49 | {text:"c",url:"functions_func.html#index_c"}, 50 | {text:"f",url:"functions_func.html#index_f"}, 51 | {text:"g",url:"functions_func.html#index_g"}, 52 | {text:"i",url:"functions_func.html#index_i"}, 53 | {text:"p",url:"functions_func.html#index_p"}, 54 | {text:"r",url:"functions_func.html#index_r"}, 55 | {text:"s",url:"functions_func.html#index_s"}, 56 | {text:"w",url:"functions_func.html#index_w"}]}, 57 | {text:"Variables",url:"functions_vars.html",children:[ 58 | {text:"b",url:"functions_vars.html#index_b"}, 59 | {text:"c",url:"functions_vars.html#index_c"}, 60 | {text:"d",url:"functions_vars.html#index_d"}, 61 | {text:"g",url:"functions_vars.html#index_g"}, 62 | {text:"m",url:"functions_vars.html#index_m"}, 63 | {text:"o",url:"functions_vars.html#index_o"}, 64 | {text:"r",url:"functions_vars.html#index_r"}, 65 | {text:"s",url:"functions_vars.html#index_s"}]}]}]}, 66 | {text:"Files",url:"files.html",children:[ 67 | {text:"File List",url:"files.html"}, 68 | {text:"File Members",url:"globals.html",children:[ 69 | {text:"All",url:"globals.html",children:[ 70 | {text:"a",url:"globals.html#index_a"}, 71 | {text:"b",url:"globals.html#index_b"}, 72 | {text:"d",url:"globals.html#index_d"}, 73 | {text:"f",url:"globals.html#index_f"}, 74 | {text:"i",url:"globals.html#index_i"}, 75 | {text:"m",url:"globals.html#index_m"}, 76 | {text:"o",url:"globals.html#index_o"}, 77 | {text:"r",url:"globals.html#index_r"}]}, 78 | {text:"Typedefs",url:"globals_type.html"}, 79 | {text:"Macros",url:"globals_defs.html",children:[ 80 | {text:"a",url:"globals_defs.html#index_a"}, 81 | {text:"b",url:"globals_defs.html#index_b"}, 82 | {text:"d",url:"globals_defs.html#index_d"}, 83 | {text:"f",url:"globals_defs.html#index_f"}, 84 | {text:"i",url:"globals_defs.html#index_i"}, 85 | {text:"m",url:"globals_defs.html#index_m"}, 86 | {text:"o",url:"globals_defs.html#index_o"}, 87 | {text:"r",url:"globals_defs.html#index_r"}]}]}]}]} 88 | -------------------------------------------------------------------------------- /extras/docs/html/modules.js: -------------------------------------------------------------------------------- 1 | var modules = 2 | [ 3 | [ "BEKEN I2C BUS", "group___g_a02.html", "group___g_a02" ], 4 | [ "Basic Functions", "group___g_a03.html", "group___g_a03" ], 5 | [ "RDS Functions", "group___g_a04.html", "group___g_a04" ], 6 | [ "Tools", "group___g_a05.html", "group___g_a05" ], 7 | [ "Union, Structure and Defined Data Types
", "group___g_a01.html", "group___g_a01" ] 8 | ]; -------------------------------------------------------------------------------- /extras/docs/html/nav_f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/nav_f.png -------------------------------------------------------------------------------- /extras/docs/html/nav_fd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/nav_fd.png -------------------------------------------------------------------------------- /extras/docs/html/nav_g.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/nav_g.png -------------------------------------------------------------------------------- /extras/docs/html/nav_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/nav_h.png -------------------------------------------------------------------------------- /extras/docs/html/nav_hd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/nav_hd.png -------------------------------------------------------------------------------- /extras/docs/html/navtree.css: -------------------------------------------------------------------------------- 1 | #nav-tree .children_ul { 2 | margin:0; 3 | padding:4px; 4 | } 5 | 6 | #nav-tree ul { 7 | list-style:none outside none; 8 | margin:0px; 9 | padding:0px; 10 | } 11 | 12 | #nav-tree li { 13 | white-space:nowrap; 14 | margin:0px; 15 | padding:0px; 16 | } 17 | 18 | #nav-tree .plus { 19 | margin:0px; 20 | } 21 | 22 | #nav-tree .selected { 23 | background-image: url('tab_a.png'); 24 | background-repeat:repeat-x; 25 | color: var(--nav-text-active-color); 26 | text-shadow: var(--nav-text-active-shadow); 27 | } 28 | 29 | #nav-tree .selected .arrow { 30 | color: var(--nav-arrow-selected-color); 31 | text-shadow: none; 32 | } 33 | 34 | #nav-tree img { 35 | margin:0px; 36 | padding:0px; 37 | border:0px; 38 | vertical-align: middle; 39 | } 40 | 41 | #nav-tree a { 42 | text-decoration:none; 43 | padding:0px; 44 | margin:0px; 45 | outline:none; 46 | } 47 | 48 | #nav-tree .label { 49 | margin:0px; 50 | padding:0px; 51 | font: 12px var(--font-family-nav); 52 | } 53 | 54 | #nav-tree .label a { 55 | padding:2px; 56 | } 57 | 58 | #nav-tree .selected a { 59 | text-decoration:none; 60 | color:var(--nav-text-active-color); 61 | } 62 | 63 | #nav-tree .children_ul { 64 | margin:0px; 65 | padding:0px; 66 | } 67 | 68 | #nav-tree .item { 69 | margin:0px; 70 | padding:0px; 71 | } 72 | 73 | #nav-tree { 74 | padding: 0px 0px; 75 | font-size:14px; 76 | overflow:auto; 77 | } 78 | 79 | #doc-content { 80 | overflow:auto; 81 | display:block; 82 | padding:0px; 83 | margin:0px; 84 | -webkit-overflow-scrolling : touch; /* iOS 5+ */ 85 | } 86 | 87 | #side-nav { 88 | padding:0 6px 0 0; 89 | margin: 0px; 90 | display:block; 91 | position: absolute; 92 | left: 0px; 93 | width: $width; 94 | overflow : hidden; 95 | } 96 | 97 | .ui-resizable .ui-resizable-handle { 98 | display:block; 99 | } 100 | 101 | .ui-resizable-e { 102 | background-image:var(--nav-splitbar-image); 103 | background-size:100%; 104 | background-repeat:repeat-y; 105 | background-attachment: scroll; 106 | cursor:ew-resize; 107 | height:100%; 108 | right:0; 109 | top:0; 110 | width:6px; 111 | } 112 | 113 | .ui-resizable-handle { 114 | display:none; 115 | font-size:0.1px; 116 | position:absolute; 117 | z-index:1; 118 | } 119 | 120 | #nav-tree-contents { 121 | margin: 6px 0px 0px 0px; 122 | } 123 | 124 | #nav-tree { 125 | background-repeat:repeat-x; 126 | background-color: var(--nav-background-color); 127 | -webkit-overflow-scrolling : touch; /* iOS 5+ */ 128 | } 129 | 130 | #nav-sync { 131 | position:absolute; 132 | top:5px; 133 | right:24px; 134 | z-index:0; 135 | } 136 | 137 | #nav-sync img { 138 | opacity:0.3; 139 | } 140 | 141 | #nav-sync img:hover { 142 | opacity:0.9; 143 | } 144 | 145 | @media print 146 | { 147 | #nav-tree { display: none; } 148 | div.ui-resizable-handle { display: none; position: relative; } 149 | } 150 | 151 | -------------------------------------------------------------------------------- /extras/docs/html/navtreedata.js: -------------------------------------------------------------------------------- 1 | /* 2 | @licstart The following is the entire license notice for the JavaScript code in this file. 3 | 4 | The MIT License (MIT) 5 | 6 | Copyright (C) 1997-2020 by Dimitri van Heesch 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software 9 | and associated documentation files (the "Software"), to deal in the Software without restriction, 10 | including without limitation the rights to use, copy, modify, merge, publish, distribute, 11 | sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all copies or 15 | substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 18 | BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 20 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | 23 | @licend The above is the entire license notice for the JavaScript code in this file 24 | */ 25 | var NAVTREE = 26 | [ 27 | [ "PU2CLR BK108X Arduino Library", "index.html", [ 28 | [ "BK108X Arduino Library implementation", "index.html", null ], 29 | [ "Todo List", "todo.html", null ], 30 | [ "Modules", "modules.html", "modules" ], 31 | [ "Classes", "annotated.html", [ 32 | [ "Class List", "annotated.html", "annotated_dup" ], 33 | [ "Class Index", "classes.html", null ], 34 | [ "Class Members", "functions.html", [ 35 | [ "All", "functions.html", null ], 36 | [ "Functions", "functions_func.html", null ], 37 | [ "Variables", "functions_vars.html", null ] 38 | ] ] 39 | ] ], 40 | [ "Files", "files.html", [ 41 | [ "File List", "files.html", "files_dup" ], 42 | [ "File Members", "globals.html", [ 43 | [ "All", "globals.html", null ], 44 | [ "Typedefs", "globals_type.html", null ], 45 | [ "Macros", "globals_defs.html", null ] 46 | ] ] 47 | ] ] 48 | ] ] 49 | ]; 50 | 51 | var NAVTREEINDEX = 52 | [ 53 | "_b_k108_x_8cpp.html", 54 | "group___g_a01.html#ab88917c1da239048f9472506f968ee06" 55 | ]; 56 | 57 | var SYNCONMSG = 'click to disable panel synchronisation'; 58 | var SYNCOFFMSG = 'click to enable panel synchronisation'; -------------------------------------------------------------------------------- /extras/docs/html/open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/open.png -------------------------------------------------------------------------------- /extras/docs/html/pages.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | PU2CLR BK108X Arduino Library: Related Pages 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 |
24 | 25 | 26 | 27 | 28 | 33 | 34 | 35 |
29 |
PU2CLR BK108X Arduino Library 1.0.2 30 |
31 |
This is an Arduino Library to control the BK108X device
32 |
36 |
37 | 38 | 39 | 44 | 45 | 46 | 54 | 55 |
56 |
57 | 62 |
64 |
65 |
66 | 71 |
72 | 73 |
77 |
78 | 79 | 80 |
81 |
82 |
83 |
84 |
85 |
Loading...
86 |
Searching...
87 |
No Matches
88 |
89 |
90 |
91 |
92 | 93 |
94 |
Related Pages
95 |
96 |
97 |
Here is a list of all related documentation pages:
98 | 99 | 100 |
 Todo List
101 |
102 |
103 |
104 | 105 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /extras/docs/html/search/all_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['afcrail_0',['AfcRail',['../group___g_a03.html#ga443e2ebe52d940c8dc4b2fa95dc1d5bd',1,'BK108X']]], 4 | ['am_5flw_1',['AM_LW',['../_b_k108_x_8h.html#abb0ffdea9eb5762555dc7b44bd1ef0a2',1,'BK108X.h']]], 5 | ['am_5fm22_2',['AM_M22',['../_b_k108_x_8h.html#af39fe24f22250fa188526968cb9ae75a',1,'BK108X.h']]], 6 | ['am_5fmw1_3',['AM_MW1',['../_b_k108_x_8h.html#aaa688c38f626aa474f1a03ac57cab615',1,'BK108X.h']]], 7 | ['am_5fsw_4',['AM_SW',['../_b_k108_x_8h.html#a776a18bb0c4290ced8ada8c123562b36',1,'BK108X.h']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /extras/docs/html/search/all_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['checki2c_0',['checkI2C',['../group___g_a05.html#ga94349ed646b59d42fe4c771e273df737',1,'BK108X']]], 4 | ['chipid_1',['chipId',['../group___g_a01.html#a76d151d53814f303d62a9b81554f9faf',1,'bk_reg01']]], 5 | ['clearrdsbuffer_2',['clearRdsBuffer',['../group___g_a04.html#gab4df6a9ab8f9ea2b4ec0878fd49b99a1',1,'BK108X']]], 6 | ['converttochar_3',['convertToChar',['../group___g_a05.html#ga2ab717229791f3d3994f10717fb3c703',1,'BK108X']]], 7 | ['currentamband_4',['currentAMBand',['../group___g_a01.html#a009b5daea03d9b11104054d7463b8bb7',1,'BK108X']]], 8 | ['currentamspace_5',['currentAMSpace',['../group___g_a01.html#ab8e3ce7673b3af09d84e466aa309ea9e',1,'BK108X']]], 9 | ['currentchannel_6',['currentChannel',['../group___g_a01.html#ad5c9de3dacc0da92568cb05870f777bf',1,'BK108X']]], 10 | ['currentfmband_7',['currentFMBand',['../group___g_a01.html#a30a872ef33639d695429d078e0548521',1,'BK108X']]], 11 | ['currentfmspace_8',['currentFMSpace',['../group___g_a01.html#a3d417aad563b9807c9173528450f8ef6',1,'BK108X']]], 12 | ['currentfrequency_9',['currentFrequency',['../group___g_a01.html#aa9e70b9b87d711102361d588dc38a59b',1,'BK108X']]], 13 | ['currentmode_10',['currentMode',['../group___g_a01.html#ab4864c3393eba04877776618a180b355',1,'BK108X']]], 14 | ['currentstep_11',['currentStep',['../group___g_a01.html#af86bdd3115a99a9e06c044692ed6e222',1,'BK108X']]], 15 | ['currentvolume_12',['currentVolume',['../group___g_a01.html#a637b02d5fa446097e998beda73059ac8',1,'BK108X']]] 16 | ]; 17 | -------------------------------------------------------------------------------- /extras/docs/html/search/all_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['de_5femphasis_5f50_0',['DE_EMPHASIS_50',['../_b_k108_x_8h.html#a620fa26e90cf0ac0645dc2ec73cf42f9',1,'BK108X.h']]], 4 | ['de_5femphasis_5f75_1',['DE_EMPHASIS_75',['../_b_k108_x_8h.html#a4be511c16b6bb86f88c9993438840d7f',1,'BK108X.h']]], 5 | ['deviceaddress_2',['deviceAddress',['../group___g_a01.html#a91b3171ba5c52f8bbbd54277bbb2bdfe',1,'BK108X']]], 6 | ['deviceid_3',['deviceId',['../group___g_a01.html#a5f8e8adbb251053157b4a51d2a38d6bb',1,'bk_reg00']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /extras/docs/html/search/all_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['fm_5fband_5fjapan_0',['FM_BAND_JAPAN',['../_b_k108_x_8h.html#a3e920d475d85c9c6ccd907ba332f94fc',1,'BK108X.h']]], 4 | ['fm_5fband_5fjapan_5fwide_1',['FM_BAND_JAPAN_WIDE',['../_b_k108_x_8h.html#a52b160692c66b326ce004ef59a9c7384',1,'BK108X.h']]], 5 | ['fm_5fband_5fusa_5feu_2',['FM_BAND_USA_EU',['../_b_k108_x_8h.html#a7417bf6a10c7dd58227fc91601825691',1,'BK108X.h']]], 6 | ['fm_5ffull_3',['FM_FULL',['../_b_k108_x_8h.html#a68615bfe4d7601a46a6510e9562a1574',1,'BK108X.h']]], 7 | ['formatcurrentfrequency_4',['formatCurrentFrequency',['../group___g_a05.html#ga12955f9e667d323153b10d48f4b50843',1,'BK108X']]], 8 | ['formatfrequency_5',['formatFrequency',['../group___g_a05.html#ga8209b9f2545c2c661fab9099061f753a',1,'BK108X']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /extras/docs/html/search/all_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['getchannel_0',['getChannel',['../group___g_a03.html#ga06f919a6698c0dee4181200222e088c2',1,'BK108X']]], 4 | ['getchipid_1',['getChipId',['../group___g_a01.html#a102d07b1523cf46434bb4434b7c70d60',1,'BK108X']]], 5 | ['getcurrentmode_2',['getCurrentMode',['../group___g_a03.html#ga75e29ce01163c9bb4934d0064e998362',1,'BK108X']]], 6 | ['getdeviceid_3',['getDeviceId',['../group___g_a01.html#a5f9fe73f248fbeafb1a6abb1c92d578b',1,'BK108X']]], 7 | ['getfrequency_4',['getFrequency',['../group___g_a03.html#ga91be125793a421bc17e2b25223b3a10a',1,'BK108X']]], 8 | ['getnext2block_5',['getNext2Block',['../group___g_a04.html#ga9604c12896a554660d5cef45a1f8d940',1,'BK108X']]], 9 | ['getnext4block_6',['getNext4Block',['../group___g_a04.html#ga395af9273883205883c5ca87776877cd',1,'BK108X']]], 10 | ['getrdsalldata_7',['getRdsAllData',['../group___g_a04.html#ga5ee4c3a85508799204ed17fb84856fdb',1,'BK108X']]], 11 | ['getrdsflagab_8',['getRdsFlagAB',['../group___g_a04.html#ga8be7187079334991c12934087e7d826c',1,'BK108X']]], 12 | ['getrdsgrouptype_9',['getRdsGroupType',['../group___g_a04.html#ga88ee370deb58d65deee0e8e159507758',1,'BK108X']]], 13 | ['getrdslocaltime_10',['getRdsLocalTime',['../group___g_a04.html#gaebab6fd2a2af03b6a05991dad7b8ab35',1,'BK108X']]], 14 | ['getrdsprograminformation_11',['getRdsProgramInformation',['../group___g_a04.html#gaa749da139e196b13efe6977e3d1a811d',1,'BK108X']]], 15 | ['getrdsprogramtype_12',['getRdsProgramType',['../group___g_a04.html#ga8dafdca0cc93acecacfd3231af8aba1e',1,'BK108X']]], 16 | ['getrdsready_13',['getRdsReady',['../group___g_a04.html#ga1fb9b7d09968c248624c9c9c3aa3b307',1,'BK108X']]], 17 | ['getrdsstationinformation_14',['getRdsStationInformation',['../group___g_a04.html#ga254ac994c1ae20891387ffd66fa8680a',1,'BK108X']]], 18 | ['getrdsstationname_15',['getRdsStationName',['../group___g_a04.html#ga4c3e22b1a3565d0ce22cd07c5c840205',1,'BK108X']]], 19 | ['getrdssync_16',['getRdsSync',['../group___g_a04.html#gace7a6e83ef173bcf9e26b129df416c9c',1,'BK108X']]], 20 | ['getrdstext_17',['getRdsText',['../group___g_a04.html#ga29cf3c40f585f958c3a00836d438e94a',1,'BK108X']]], 21 | ['getrdstext0a_18',['getRdsText0A',['../group___g_a04.html#ga045825c54358c0bc1e741889a14a8a32',1,'BK108X']]], 22 | ['getrdstext2a_19',['getRdsText2A',['../group___g_a04.html#gaa45a715a465a77143dc7d300d6a3192f',1,'BK108X']]], 23 | ['getrdstext2b_20',['getRdsText2B',['../group___g_a04.html#ga2f9f668c6a689276d486fe0c0871086c',1,'BK108X']]], 24 | ['getrdstime_21',['getRdsTime',['../group___g_a04.html#ga6c0f7231f5c0b02185f5f3ad847364a4',1,'BK108X']]], 25 | ['getrdsversioncode_22',['getRdsVersionCode',['../group___g_a04.html#ga4693aebc8f2c479df966746d42374bf6',1,'BK108X']]], 26 | ['getrealchannel_23',['getRealChannel',['../group___g_a03.html#ga142c5b934ce9d95beb8e83278b622013',1,'BK108X']]], 27 | ['getrealfrequency_24',['getRealFrequency',['../group___g_a03.html#gac0f7f0de2093cae7777d2bc5ee1b22b4',1,'BK108X']]], 28 | ['getregister_25',['getRegister',['../group___g_a03.html#gaff213081b782af8223279caf1488ef80',1,'BK108X']]], 29 | ['getregistervalues_26',['getRegisterValues',['../group___g_a05.html#ga76cc0d91aab1701220c080349d7717d8',1,'BK108X']]], 30 | ['getrssi_27',['getRssi',['../group___g_a03.html#gad8ecfa1da87d3ca51f735d7f921706bf',1,'BK108X']]], 31 | ['getshadownregister_28',['getShadownRegister',['../group___g_a03.html#gab9a18cc2ced8b4683f83ce95f0d62df4',1,'BK108X']]], 32 | ['getsnr_29',['getSnr',['../group___g_a03.html#ga378780ca51288b4cf94d6820704023fd',1,'BK108X']]], 33 | ['getstatus_30',['getStatus',['../group___g_a03.html#ga759a835f25ca7ce2c861cc5b3cf1abb8',1,'BK108X']]], 34 | ['getvolume_31',['getVolume',['../group___g_a03.html#gab8dba059205a7d118c0153db8636fdb8',1,'BK108X']]], 35 | ['group0_32',['group0',['../group___g_a01.html#a14e997232888e2a94a6adfec0300e046',1,'bk_rds_blockb']]], 36 | ['group2_33',['group2',['../group___g_a01.html#af8b387e92a4643b1673bb4d50eae3ccd',1,'bk_rds_blockb']]] 37 | ]; 38 | -------------------------------------------------------------------------------- /extras/docs/html/search/all_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['i2c_5fdevice_5faddr_0',['I2C_DEVICE_ADDR',['../_b_k108_x_8h.html#af1732013854882f94b02e77b8a6106ec',1,'BK108X.h']]], 4 | ['i2cack_1',['i2cAck',['../group___g_a02.html#gaf3c1f7226ebb99d7b7aa2e0c58d166db',1,'BK108X']]], 5 | ['i2cbegintransaction_2',['i2cBeginTransaction',['../group___g_a02.html#ga964d94010afe620e87a01f347bc55196',1,'BK108X']]], 6 | ['i2cendtransaction_3',['i2cEndTransaction',['../group___g_a02.html#ga9a1baa9e95b4c25a6bb7cfb00baebfbd',1,'BK108X']]], 7 | ['i2cinit_4',['i2cInit',['../group___g_a02.html#gafbe95dfa30734cd6c30f5d6ea77089c9',1,'BK108X']]], 8 | ['i2cnack_5',['i2cNack',['../group___g_a02.html#gab7987984a7302ba985689c6cec95f833',1,'BK108X']]], 9 | ['i2creadbyte_6',['i2cReadByte',['../group___g_a02.html#ga2d7a8606874d174e6fdb66d9ef602811',1,'BK108X']]], 10 | ['i2creceiveack_7',['i2cReceiveAck',['../group___g_a02.html#ga00ccd956af8470ccc32a18b476dda0c2',1,'BK108X']]], 11 | ['i2cwritebyte_8',['i2cWriteByte',['../group___g_a02.html#ga9f97140ef586e3fbf52b482bfae94d9c',1,'BK108X']]], 12 | ['isstereo_9',['isStereo',['../group___g_a03.html#ga83b36ff59c25663df3194c49747e6fe7',1,'BK108X']]] 13 | ]; 14 | -------------------------------------------------------------------------------- /extras/docs/html/search/all_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['max_5fdelay_5fafter_5foscillator_0',['MAX_DELAY_AFTER_OSCILLATOR',['../_b_k108_x_8h.html#afb81dd661d531fa5c5422549fab7588f',1,'BK108X.h']]], 4 | ['max_5fseek_5ftime_1',['MAX_SEEK_TIME',['../_b_k108_x_8h.html#acc98e8d3badddd21bc528451bb718f82',1,'BK108X.h']]], 5 | ['maxdelayaftercrystalon_2',['maxDelayAfterCrystalOn',['../group___g_a01.html#a84232f0a3edd1c9307e463266fc64bcb',1,'BK108X']]], 6 | ['maximumfrequency_3',['maximumFrequency',['../group___g_a01.html#a1e99e80f89544a23a58b2584570b50b9',1,'BK108X']]], 7 | ['minimumfrequency_4',['minimumFrequency',['../group___g_a01.html#ad0d12ff6d8f2b1980edf1825d68a0a67',1,'BK108X']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /extras/docs/html/search/all_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['oscillator_5ftype_5fcrystal_0',['OSCILLATOR_TYPE_CRYSTAL',['../_b_k108_x_8h.html#ad0763fd256db4ec1ecc62f84bbff56e2',1,'BK108X.h']]], 4 | ['oscillator_5ftype_5frefclk_1',['OSCILLATOR_TYPE_REFCLK',['../_b_k108_x_8h.html#ad079e38ccae2f64aa341332e2ccb8b8e',1,'BK108X.h']]], 5 | ['oscillatorfrequency_2',['oscillatorFrequency',['../group___g_a01.html#ad36cac73c8cbb3021797ee843e559aab',1,'BK108X']]], 6 | ['oscillatortype_3',['oscillatorType',['../group___g_a01.html#a50a9ac975ce0539aed15b122db83d36b',1,'BK108X']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /extras/docs/html/search/all_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['powerdown_0',['powerDown',['../group___g_a03.html#gaa3a8958cbfb9cac36c81ed9351b5b857',1,'BK108X']]], 4 | ['powerup_1',['powerUp',['../group___g_a03.html#gacdabf4e7e5c7ef78bf51710122daa618',1,'BK108X']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /extras/docs/html/search/all_b.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['seek_0',['seek',['../group___g_a01.html#ae9395bc20d9f1ef654253fed787e07cd',1,'BK108X']]], 4 | ['seekhardware_1',['seekHardware',['../group___g_a03.html#ga0a0067f9c9c50d595bcec8b9157bd957',1,'BK108X']]], 5 | ['seekinterruptpin_2',['seekInterruptPin',['../group___g_a01.html#a68b0bac67680a37773d972c470716a37',1,'BK108X']]], 6 | ['seeksoftware_3',['seekSoftware',['../group___g_a03.html#ga137b126f37f177a7c3928c5755d99757',1,'BK108X']]], 7 | ['setafc_4',['setAfc',['../group___g_a03.html#ga578240fab9700fd91669777320684f86',1,'BK108X']]], 8 | ['setafcave_5',['setAfcAve',['../group___g_a03.html#ga04312e1df5ec81f46dd748552936426f',1,'BK108X']]], 9 | ['setafcmute_6',['setAfcMute',['../group___g_a03.html#ga6d56b06e4420c573e56dbdd36ed18ed6',1,'BK108X']]], 10 | ['setafcrange_7',['setAfcRange',['../group___g_a01.html#a55598bcb5bf6624db9741cac93c015da',1,'BK108X']]], 11 | ['setafcrssisnrcalculaterate_8',['setAfcRssiSnrCalculateRate',['../group___g_a03.html#ga9371c356633341d367ca576e7e997e54',1,'BK108X']]], 12 | ['setafcrssithreshold_9',['setAfcRssiThreshold',['../group___g_a03.html#ga56e4525ed2d981ea44c00b3bfed9f225',1,'BK108X']]], 13 | ['setafcthreshold_10',['setAfcThreshold',['../group___g_a03.html#ga86a02a2f56ddc56f7c55b52a964c63f7',1,'BK108X']]], 14 | ['setafcvar_11',['setAfcVar',['../group___g_a03.html#ga797c467118b27417c5d203a30d6461f2',1,'BK108X']]], 15 | ['setam_12',['setAM',['../group___g_a03.html#ga334ccbe40fcb5faa9e045288ca606f89',1,'BK108X']]], 16 | ['setaudiomute_13',['setAudioMute',['../group___g_a03.html#ga402613def6ec429dcdb25ebdd91404fc',1,'BK108X::setAudioMute(bool left, bool right)'],['../group___g_a03.html#ga62f9f2a5d84230b5f62be82d5514e86f',1,'BK108X::setAudioMute(bool value)']]], 17 | ['setband_14',['setBand',['../group___g_a03.html#ga528a4c6c6a343c3b7ae95331bb4316ce',1,'BK108X']]], 18 | ['setchannel_15',['setChannel',['../group___g_a03.html#gaa479240fcad272dc505ae50a6f4369d3',1,'BK108X']]], 19 | ['setdelayaftercrystalon_16',['setDelayAfterCrystalOn',['../group___g_a03.html#ga397b7279615925dea40dd4befa673573',1,'BK108X']]], 20 | ['setfm_17',['setFM',['../group___g_a03.html#gaa6da4291400839ffc68ccff5e1ad7b13',1,'BK108X']]], 21 | ['setfmdeemphasis_18',['setFmDeemphasis',['../group___g_a03.html#gabe69405f657c656f61e5e6b169690709',1,'BK108X']]], 22 | ['setfmgain_19',['setFMGain',['../group___g_a03.html#gaeb1a1f4d31cb789c71809102c47da5b0',1,'BK108X']]], 23 | ['setfrequency_20',['setFrequency',['../group___g_a03.html#ga514242393caa2068d8acb3adec953832',1,'BK108X']]], 24 | ['setfrequencydown_21',['setFrequencyDown',['../group___g_a03.html#ga5bf724e36f2dbdc826c387601e00ace1',1,'BK108X']]], 25 | ['setfrequencyup_22',['setFrequencyUp',['../group___g_a03.html#gac0c265a916d7852d7e4977b1835098eb',1,'BK108X']]], 26 | ['setgpio2_23',['setGpio2',['../group___g_a03.html#ga6d3ee2c4dd53cb37737770ca65e847ac',1,'BK108X']]], 27 | ['setgpio3_24',['setGpio3',['../group___g_a03.html#ga7215ad36ae1b116b5313efea09478cf3',1,'BK108X']]], 28 | ['seti2c_25',['setI2C',['../group___g_a02.html#gabb521f2af588ce1c94755bd2525f32c9',1,'BK108X']]], 29 | ['seti2caddress_26',['setI2CAddress',['../group___g_a03.html#ga46c6eb53236fb1b817147a12a94e237b',1,'BK108X']]], 30 | ['setmono_27',['setMono',['../group___g_a03.html#gabc3b9000cc833cfbec7cf1edc03ef674',1,'BK108X']]], 31 | ['setmutethreshold_28',['setMuteThreshold',['../group___g_a03.html#gaeda6bee33d55a04e09a76408812f13cb',1,'BK108X']]], 32 | ['setrds_29',['setRds',['../group___g_a04.html#gae34ef5e3d69ef41522b611dcc3ce14a0',1,'BK108X']]], 33 | ['setrds_30',['setRDS',['../group___g_a01.html#ae6fb3f9108ff9bc85382e541f256805d',1,'BK108X']]], 34 | ['setrdsmode_31',['setRdsMode',['../group___g_a04.html#gadb237cc8ad191804af5de514a5610fd9',1,'BK108X']]], 35 | ['setregister_32',['setRegister',['../group___g_a03.html#gadc64097823fe26425a420270562cfc34',1,'BK108X']]], 36 | ['setseekmute_33',['setSeekMute',['../group___g_a03.html#gafce9573202cce9a06869bead65fe9685',1,'BK108X']]], 37 | ['setseekthreshold_34',['setSeekThreshold',['../group___g_a03.html#ga2d2a246c4d65dfbf93b5660a500c74c3',1,'BK108X']]], 38 | ['setshadownregister_35',['setShadownRegister',['../group___g_a03.html#ga08ce22717a9f95e1ee3685478e919ee5',1,'BK108X']]], 39 | ['setsoftmute_36',['setSoftMute',['../group___g_a03.html#ga65342f0cf9a3ad9582b920f8d084caf8',1,'BK108X']]], 40 | ['setsoftmuteattack_37',['setSoftMuteAttack',['../group___g_a03.html#ga162198f02a87c3ed6b0fd665719248da',1,'BK108X']]], 41 | ['setsoftmuteattenuation_38',['setSoftMuteAttenuation',['../group___g_a03.html#ga966d4542de0422959750044633c5217a',1,'BK108X']]], 42 | ['setspace_39',['setSpace',['../group___g_a03.html#ga0e3272d62ec11f91251569e422cd4c58',1,'BK108X']]], 43 | ['setstereothresholdpilotstrength_40',['setStereoThresholdPilotStrength',['../group___g_a03.html#ga787b79fcfb96881a1784560393a23f12',1,'BK108X']]], 44 | ['settimecallstrengthpilot_41',['setTimeCallStrengthPilot',['../group___g_a03.html#gad4595c8678c2ec213f5034f90dc61262',1,'BK108X']]], 45 | ['setup_42',['setup',['../group___g_a03.html#gad1e862acb8dd7f8f121963c97b9e0eed',1,'BK108X']]], 46 | ['setvolume_43',['setVolume',['../group___g_a03.html#gaa91f9b57fb80f9411f97755d15e7d808',1,'BK108X']]], 47 | ['setvolumedown_44',['setVolumeDown',['../group___g_a03.html#gac2cf423a3eeee3213a3c7c73a8316f8a',1,'BK108X']]], 48 | ['setvolumeup_45',['setVolumeUp',['../group___g_a03.html#ga89438602c507ba477aaa626999210b7e',1,'BK108X']]] 49 | ]; 50 | -------------------------------------------------------------------------------- /extras/docs/html/search/all_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['todo_20list_0',['Todo List',['../todo.html',1,'']]], 4 | ['tools_1',['Tools',['../group___g_a05.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /extras/docs/html/search/all_d.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['union_2c_20structure_20and_20defined_20data_20types_20_20_3cbr_3e_0',['Union, Structure and Defined Data Types <br>',['../group___g_a01.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/docs/html/search/all_e.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['waitandfinishtune_0',['waitAndFinishTune',['../group___g_a03.html#ga157dea83c3abb71f49124252a109a383',1,'BK108X']]], 4 | ['word16_5fto_5fbytes_1',['word16_to_bytes',['../group___g_a01.html#unionword16__to__bytes',1,'']]], 5 | ['word16_5fto_5fbytes_2erefined_2',['word16_to_bytes.refined',['../group___g_a01.html#structword16__to__bytes_8refined',1,'']]], 6 | ['writeregister_3',['writeRegister',['../group___g_a02.html#gaaa412587cacee78fdb6da296d97c9c74',1,'BK108X']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /extras/docs/html/search/classes_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['word16_5fto_5fbytes_0',['word16_to_bytes',['../group___g_a01.html#unionword16__to__bytes',1,'']]], 4 | ['word16_5fto_5fbytes_2erefined_1',['word16_to_bytes.refined',['../group___g_a01.html#structword16__to__bytes_8refined',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /extras/docs/html/search/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 16 | 18 | image/svg+xml 19 | 21 | 22 | 23 | 24 | 25 | 27 | 31 | 32 | -------------------------------------------------------------------------------- /extras/docs/html/search/defines_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['am_5flw_0',['AM_LW',['../_b_k108_x_8h.html#abb0ffdea9eb5762555dc7b44bd1ef0a2',1,'BK108X.h']]], 4 | ['am_5fm22_1',['AM_M22',['../_b_k108_x_8h.html#af39fe24f22250fa188526968cb9ae75a',1,'BK108X.h']]], 5 | ['am_5fmw1_2',['AM_MW1',['../_b_k108_x_8h.html#aaa688c38f626aa474f1a03ac57cab615',1,'BK108X.h']]], 6 | ['am_5fsw_3',['AM_SW',['../_b_k108_x_8h.html#a776a18bb0c4290ced8ada8c123562b36',1,'BK108X.h']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /extras/docs/html/search/defines_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['bk_5fmode_5fam_0',['BK_MODE_AM',['../_b_k108_x_8h.html#a3c6f5bce39c59fae7c4f238107d2d289',1,'BK108X.h']]], 4 | ['bk_5fmode_5ffm_1',['BK_MODE_FM',['../_b_k108_x_8h.html#af1c4cc5f6cdda1dbb699c5be2ff1bd79',1,'BK108X.h']]], 5 | ['bk_5fseek_5fdown_2',['BK_SEEK_DOWN',['../_b_k108_x_8h.html#a017ece573abf2a972df53a4266b0be4e',1,'BK108X.h']]], 6 | ['bk_5fseek_5fstop_3',['BK_SEEK_STOP',['../_b_k108_x_8h.html#acaac3081acb27c04e3f8fb159ba831fa',1,'BK108X.h']]], 7 | ['bk_5fseek_5fup_4',['BK_SEEK_UP',['../_b_k108_x_8h.html#a8b6fda0c416f414d2f9b94e704b4bb42',1,'BK108X.h']]], 8 | ['bk_5fseek_5fwrap_5',['BK_SEEK_WRAP',['../_b_k108_x_8h.html#a7d3798980a48b89080f730fdcab13fa3',1,'BK108X.h']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /extras/docs/html/search/defines_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['de_5femphasis_5f50_0',['DE_EMPHASIS_50',['../_b_k108_x_8h.html#a620fa26e90cf0ac0645dc2ec73cf42f9',1,'BK108X.h']]], 4 | ['de_5femphasis_5f75_1',['DE_EMPHASIS_75',['../_b_k108_x_8h.html#a4be511c16b6bb86f88c9993438840d7f',1,'BK108X.h']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /extras/docs/html/search/defines_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['fm_5fband_5fjapan_0',['FM_BAND_JAPAN',['../_b_k108_x_8h.html#a3e920d475d85c9c6ccd907ba332f94fc',1,'BK108X.h']]], 4 | ['fm_5fband_5fjapan_5fwide_1',['FM_BAND_JAPAN_WIDE',['../_b_k108_x_8h.html#a52b160692c66b326ce004ef59a9c7384',1,'BK108X.h']]], 5 | ['fm_5fband_5fusa_5feu_2',['FM_BAND_USA_EU',['../_b_k108_x_8h.html#a7417bf6a10c7dd58227fc91601825691',1,'BK108X.h']]], 6 | ['fm_5ffull_3',['FM_FULL',['../_b_k108_x_8h.html#a68615bfe4d7601a46a6510e9562a1574',1,'BK108X.h']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /extras/docs/html/search/defines_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['i2c_5fdevice_5faddr_0',['I2C_DEVICE_ADDR',['../_b_k108_x_8h.html#af1732013854882f94b02e77b8a6106ec',1,'BK108X.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/docs/html/search/defines_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['max_5fdelay_5fafter_5foscillator_0',['MAX_DELAY_AFTER_OSCILLATOR',['../_b_k108_x_8h.html#afb81dd661d531fa5c5422549fab7588f',1,'BK108X.h']]], 4 | ['max_5fseek_5ftime_1',['MAX_SEEK_TIME',['../_b_k108_x_8h.html#acc98e8d3badddd21bc528451bb718f82',1,'BK108X.h']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /extras/docs/html/search/defines_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['oscillator_5ftype_5fcrystal_0',['OSCILLATOR_TYPE_CRYSTAL',['../_b_k108_x_8h.html#ad0763fd256db4ec1ecc62f84bbff56e2',1,'BK108X.h']]], 4 | ['oscillator_5ftype_5frefclk_1',['OSCILLATOR_TYPE_REFCLK',['../_b_k108_x_8h.html#ad079e38ccae2f64aa341332e2ccb8b8e',1,'BK108X.h']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /extras/docs/html/search/defines_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['rds_5fstandard_0',['RDS_STANDARD',['../_b_k108_x_8h.html#a128f40c85c30594203fd937611ba5f2c',1,'BK108X.h']]], 4 | ['rds_5fverbose_1',['RDS_VERBOSE',['../_b_k108_x_8h.html#acdc3372b73fee284997dbef795123257',1,'BK108X.h']]], 5 | ['reg00_2',['REG00',['../_b_k108_x_8h.html#a748ad53bef975af9c1edbcacc58e5be4',1,'BK108X.h']]], 6 | ['reg01_3',['REG01',['../_b_k108_x_8h.html#afc04faecdab9e0d1751466b6c53fdaf1',1,'BK108X.h']]], 7 | ['reg02_4',['REG02',['../_b_k108_x_8h.html#a09a3d3fef9f53f0dbe1dd0072f02c1d4',1,'BK108X.h']]], 8 | ['reg03_5',['REG03',['../_b_k108_x_8h.html#ac2446f96334b533154259a21c13950e6',1,'BK108X.h']]], 9 | ['reg04_6',['REG04',['../_b_k108_x_8h.html#a88dee04c27a51e335798ab012dccbea1',1,'BK108X.h']]], 10 | ['reg05_7',['REG05',['../_b_k108_x_8h.html#a848ac333ddfea97bc1f16a2e69eaf953',1,'BK108X.h']]], 11 | ['reg06_8',['REG06',['../_b_k108_x_8h.html#ac5641e8e0c3254714bcd533a4b0111ca',1,'BK108X.h']]], 12 | ['reg07_9',['REG07',['../_b_k108_x_8h.html#a2a41df49654ae321f569bfabfa74de24',1,'BK108X.h']]], 13 | ['reg08_10',['REG08',['../_b_k108_x_8h.html#a96f1c217ac648e08bc64dd3b9086612c',1,'BK108X.h']]], 14 | ['reg09_11',['REG09',['../_b_k108_x_8h.html#a48be4d4aa3bde15da7a8145c0f64fd7f',1,'BK108X.h']]], 15 | ['reg0a_12',['REG0A',['../_b_k108_x_8h.html#a5ec596211175cecd682755f5e996b6dd',1,'BK108X.h']]], 16 | ['reg0b_13',['REG0B',['../_b_k108_x_8h.html#a76c73d8e23848f8d73679450c2d7264b',1,'BK108X.h']]], 17 | ['reg0c_14',['REG0C',['../_b_k108_x_8h.html#a0e3b6e600782d453f87223f87784c54d',1,'BK108X.h']]], 18 | ['reg0d_15',['REG0D',['../_b_k108_x_8h.html#a41b7a4f7b9e629eb87dba4152995a616',1,'BK108X.h']]], 19 | ['reg0e_16',['REG0E',['../_b_k108_x_8h.html#a1a5322c7bc447986d2d3b4d13de95315',1,'BK108X.h']]], 20 | ['reg0f_17',['REG0F',['../_b_k108_x_8h.html#a949846d6974a39c871614c2f15ee0691',1,'BK108X.h']]], 21 | ['reg10_18',['REG10',['../_b_k108_x_8h.html#a4bfd6b226ed1e9858b3c1e8fc0a4137e',1,'BK108X.h']]], 22 | ['reg11_19',['REG11',['../_b_k108_x_8h.html#a96ac68e41626933b41138548318e052b',1,'BK108X.h']]], 23 | ['reg12_20',['REG12',['../_b_k108_x_8h.html#a06bf525972f7b47f7683a0c37cfb2a70',1,'BK108X.h']]], 24 | ['reg13_21',['REG13',['../_b_k108_x_8h.html#a2c18d898fc24de24b8731e57c6a1924d',1,'BK108X.h']]], 25 | ['reg14_22',['REG14',['../_b_k108_x_8h.html#ad34d16e8c104c88c8fb1ce1195cfed14',1,'BK108X.h']]], 26 | ['reg15_23',['REG15',['../_b_k108_x_8h.html#a3f7e2fe33fd2114b91fa653ba3fb932b',1,'BK108X.h']]], 27 | ['reg16_24',['REG16',['../_b_k108_x_8h.html#a7f2f605c029c5c96fb06ecca2933dc67',1,'BK108X.h']]], 28 | ['reg17_25',['REG17',['../_b_k108_x_8h.html#a2d697bfd5ba8d3203a00b1eb40b2bf0f',1,'BK108X.h']]], 29 | ['reg18_26',['REG18',['../_b_k108_x_8h.html#ac5d858df6fa437b9e2fdd74ed2bb027a',1,'BK108X.h']]], 30 | ['reg19_27',['REG19',['../_b_k108_x_8h.html#a575b918902872d95be6588c9732fd8bd',1,'BK108X.h']]], 31 | ['reg1a_28',['REG1A',['../_b_k108_x_8h.html#a5eeaea32c870a31999643b68ba6c9cdb',1,'BK108X.h']]], 32 | ['reg1b_29',['REG1B',['../_b_k108_x_8h.html#a8928c3ceb92de4ff29e682dca2faa85e',1,'BK108X.h']]], 33 | ['reg1c_30',['REG1C',['../_b_k108_x_8h.html#a615ce0ebc819ed8ea5f84d81e9d3c707',1,'BK108X.h']]], 34 | ['reg1d_31',['REG1D',['../_b_k108_x_8h.html#a936c7bd27b99a90769f93ec3f004b3e0',1,'BK108X.h']]], 35 | ['reg1e_32',['REG1E',['../_b_k108_x_8h.html#af9cfc0b147b4d8d30b4d034a5fa389fc',1,'BK108X.h']]], 36 | ['reg1f_33',['REG1F',['../_b_k108_x_8h.html#a633834d741fc439273084e78de4fd632',1,'BK108X.h']]] 37 | ]; 38 | -------------------------------------------------------------------------------- /extras/docs/html/search/files_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['bk108x_2ecpp_0',['BK108X.cpp',['../_b_k108_x_8cpp.html',1,'']]], 4 | ['bk108x_2eh_1',['BK108X.h',['../_b_k108_x_8h.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /extras/docs/html/search/functions_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['afcrail_0',['AfcRail',['../group___g_a03.html#ga443e2ebe52d940c8dc4b2fa95dc1d5bd',1,'BK108X']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/docs/html/search/functions_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['checki2c_0',['checkI2C',['../group___g_a05.html#ga94349ed646b59d42fe4c771e273df737',1,'BK108X']]], 4 | ['clearrdsbuffer_1',['clearRdsBuffer',['../group___g_a04.html#gab4df6a9ab8f9ea2b4ec0878fd49b99a1',1,'BK108X']]], 5 | ['converttochar_2',['convertToChar',['../group___g_a05.html#ga2ab717229791f3d3994f10717fb3c703',1,'BK108X']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /extras/docs/html/search/functions_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['formatcurrentfrequency_0',['formatCurrentFrequency',['../group___g_a05.html#ga12955f9e667d323153b10d48f4b50843',1,'BK108X']]], 4 | ['formatfrequency_1',['formatFrequency',['../group___g_a05.html#ga8209b9f2545c2c661fab9099061f753a',1,'BK108X']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /extras/docs/html/search/functions_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['getchannel_0',['getChannel',['../group___g_a03.html#ga06f919a6698c0dee4181200222e088c2',1,'BK108X']]], 4 | ['getchipid_1',['getChipId',['../group___g_a01.html#a102d07b1523cf46434bb4434b7c70d60',1,'BK108X']]], 5 | ['getcurrentmode_2',['getCurrentMode',['../group___g_a03.html#ga75e29ce01163c9bb4934d0064e998362',1,'BK108X']]], 6 | ['getdeviceid_3',['getDeviceId',['../group___g_a01.html#a5f9fe73f248fbeafb1a6abb1c92d578b',1,'BK108X']]], 7 | ['getfrequency_4',['getFrequency',['../group___g_a03.html#ga91be125793a421bc17e2b25223b3a10a',1,'BK108X']]], 8 | ['getnext2block_5',['getNext2Block',['../group___g_a04.html#ga9604c12896a554660d5cef45a1f8d940',1,'BK108X']]], 9 | ['getnext4block_6',['getNext4Block',['../group___g_a04.html#ga395af9273883205883c5ca87776877cd',1,'BK108X']]], 10 | ['getrdsalldata_7',['getRdsAllData',['../group___g_a04.html#ga5ee4c3a85508799204ed17fb84856fdb',1,'BK108X']]], 11 | ['getrdsflagab_8',['getRdsFlagAB',['../group___g_a04.html#ga8be7187079334991c12934087e7d826c',1,'BK108X']]], 12 | ['getrdsgrouptype_9',['getRdsGroupType',['../group___g_a04.html#ga88ee370deb58d65deee0e8e159507758',1,'BK108X']]], 13 | ['getrdslocaltime_10',['getRdsLocalTime',['../group___g_a04.html#gaebab6fd2a2af03b6a05991dad7b8ab35',1,'BK108X']]], 14 | ['getrdsprograminformation_11',['getRdsProgramInformation',['../group___g_a04.html#gaa749da139e196b13efe6977e3d1a811d',1,'BK108X']]], 15 | ['getrdsprogramtype_12',['getRdsProgramType',['../group___g_a04.html#ga8dafdca0cc93acecacfd3231af8aba1e',1,'BK108X']]], 16 | ['getrdsready_13',['getRdsReady',['../group___g_a04.html#ga1fb9b7d09968c248624c9c9c3aa3b307',1,'BK108X']]], 17 | ['getrdsstationinformation_14',['getRdsStationInformation',['../group___g_a04.html#ga254ac994c1ae20891387ffd66fa8680a',1,'BK108X']]], 18 | ['getrdsstationname_15',['getRdsStationName',['../group___g_a04.html#ga4c3e22b1a3565d0ce22cd07c5c840205',1,'BK108X']]], 19 | ['getrdssync_16',['getRdsSync',['../group___g_a04.html#gace7a6e83ef173bcf9e26b129df416c9c',1,'BK108X']]], 20 | ['getrdstext_17',['getRdsText',['../group___g_a04.html#ga29cf3c40f585f958c3a00836d438e94a',1,'BK108X']]], 21 | ['getrdstext0a_18',['getRdsText0A',['../group___g_a04.html#ga045825c54358c0bc1e741889a14a8a32',1,'BK108X']]], 22 | ['getrdstext2a_19',['getRdsText2A',['../group___g_a04.html#gaa45a715a465a77143dc7d300d6a3192f',1,'BK108X']]], 23 | ['getrdstext2b_20',['getRdsText2B',['../group___g_a04.html#ga2f9f668c6a689276d486fe0c0871086c',1,'BK108X']]], 24 | ['getrdstime_21',['getRdsTime',['../group___g_a04.html#ga6c0f7231f5c0b02185f5f3ad847364a4',1,'BK108X']]], 25 | ['getrdsversioncode_22',['getRdsVersionCode',['../group___g_a04.html#ga4693aebc8f2c479df966746d42374bf6',1,'BK108X']]], 26 | ['getrealchannel_23',['getRealChannel',['../group___g_a03.html#ga142c5b934ce9d95beb8e83278b622013',1,'BK108X']]], 27 | ['getrealfrequency_24',['getRealFrequency',['../group___g_a03.html#gac0f7f0de2093cae7777d2bc5ee1b22b4',1,'BK108X']]], 28 | ['getregister_25',['getRegister',['../group___g_a03.html#gaff213081b782af8223279caf1488ef80',1,'BK108X']]], 29 | ['getregistervalues_26',['getRegisterValues',['../group___g_a05.html#ga76cc0d91aab1701220c080349d7717d8',1,'BK108X']]], 30 | ['getrssi_27',['getRssi',['../group___g_a03.html#gad8ecfa1da87d3ca51f735d7f921706bf',1,'BK108X']]], 31 | ['getshadownregister_28',['getShadownRegister',['../group___g_a03.html#gab9a18cc2ced8b4683f83ce95f0d62df4',1,'BK108X']]], 32 | ['getsnr_29',['getSnr',['../group___g_a03.html#ga378780ca51288b4cf94d6820704023fd',1,'BK108X']]], 33 | ['getstatus_30',['getStatus',['../group___g_a03.html#ga759a835f25ca7ce2c861cc5b3cf1abb8',1,'BK108X']]], 34 | ['getvolume_31',['getVolume',['../group___g_a03.html#gab8dba059205a7d118c0153db8636fdb8',1,'BK108X']]] 35 | ]; 36 | -------------------------------------------------------------------------------- /extras/docs/html/search/functions_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['i2cack_0',['i2cAck',['../group___g_a02.html#gaf3c1f7226ebb99d7b7aa2e0c58d166db',1,'BK108X']]], 4 | ['i2cbegintransaction_1',['i2cBeginTransaction',['../group___g_a02.html#ga964d94010afe620e87a01f347bc55196',1,'BK108X']]], 5 | ['i2cendtransaction_2',['i2cEndTransaction',['../group___g_a02.html#ga9a1baa9e95b4c25a6bb7cfb00baebfbd',1,'BK108X']]], 6 | ['i2cinit_3',['i2cInit',['../group___g_a02.html#gafbe95dfa30734cd6c30f5d6ea77089c9',1,'BK108X']]], 7 | ['i2cnack_4',['i2cNack',['../group___g_a02.html#gab7987984a7302ba985689c6cec95f833',1,'BK108X']]], 8 | ['i2creadbyte_5',['i2cReadByte',['../group___g_a02.html#ga2d7a8606874d174e6fdb66d9ef602811',1,'BK108X']]], 9 | ['i2creceiveack_6',['i2cReceiveAck',['../group___g_a02.html#ga00ccd956af8470ccc32a18b476dda0c2',1,'BK108X']]], 10 | ['i2cwritebyte_7',['i2cWriteByte',['../group___g_a02.html#ga9f97140ef586e3fbf52b482bfae94d9c',1,'BK108X']]], 11 | ['isstereo_8',['isStereo',['../group___g_a03.html#ga83b36ff59c25663df3194c49747e6fe7',1,'BK108X']]] 12 | ]; 13 | -------------------------------------------------------------------------------- /extras/docs/html/search/functions_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['powerdown_0',['powerDown',['../group___g_a03.html#gaa3a8958cbfb9cac36c81ed9351b5b857',1,'BK108X']]], 4 | ['powerup_1',['powerUp',['../group___g_a03.html#gacdabf4e7e5c7ef78bf51710122daa618',1,'BK108X']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /extras/docs/html/search/functions_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['readregister_0',['readRegister',['../group___g_a02.html#ga6521ba6b192db9370203d6672178d47e',1,'BK108X']]], 4 | ['reset_1',['reset',['../group___g_a03.html#ga0479b36a2d6558df557a3ba4a0d07ce2',1,'BK108X']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /extras/docs/html/search/functions_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['seek_0',['seek',['../group___g_a01.html#ae9395bc20d9f1ef654253fed787e07cd',1,'BK108X']]], 4 | ['seekhardware_1',['seekHardware',['../group___g_a03.html#ga0a0067f9c9c50d595bcec8b9157bd957',1,'BK108X']]], 5 | ['seeksoftware_2',['seekSoftware',['../group___g_a03.html#ga137b126f37f177a7c3928c5755d99757',1,'BK108X']]], 6 | ['setafc_3',['setAfc',['../group___g_a03.html#ga578240fab9700fd91669777320684f86',1,'BK108X']]], 7 | ['setafcave_4',['setAfcAve',['../group___g_a03.html#ga04312e1df5ec81f46dd748552936426f',1,'BK108X']]], 8 | ['setafcmute_5',['setAfcMute',['../group___g_a03.html#ga6d56b06e4420c573e56dbdd36ed18ed6',1,'BK108X']]], 9 | ['setafcrange_6',['setAfcRange',['../group___g_a01.html#a55598bcb5bf6624db9741cac93c015da',1,'BK108X']]], 10 | ['setafcrssisnrcalculaterate_7',['setAfcRssiSnrCalculateRate',['../group___g_a03.html#ga9371c356633341d367ca576e7e997e54',1,'BK108X']]], 11 | ['setafcrssithreshold_8',['setAfcRssiThreshold',['../group___g_a03.html#ga56e4525ed2d981ea44c00b3bfed9f225',1,'BK108X']]], 12 | ['setafcthreshold_9',['setAfcThreshold',['../group___g_a03.html#ga86a02a2f56ddc56f7c55b52a964c63f7',1,'BK108X']]], 13 | ['setafcvar_10',['setAfcVar',['../group___g_a03.html#ga797c467118b27417c5d203a30d6461f2',1,'BK108X']]], 14 | ['setam_11',['setAM',['../group___g_a03.html#ga334ccbe40fcb5faa9e045288ca606f89',1,'BK108X']]], 15 | ['setaudiomute_12',['setAudioMute',['../group___g_a03.html#ga402613def6ec429dcdb25ebdd91404fc',1,'BK108X::setAudioMute(bool left, bool right)'],['../group___g_a03.html#ga62f9f2a5d84230b5f62be82d5514e86f',1,'BK108X::setAudioMute(bool value)']]], 16 | ['setband_13',['setBand',['../group___g_a03.html#ga528a4c6c6a343c3b7ae95331bb4316ce',1,'BK108X']]], 17 | ['setchannel_14',['setChannel',['../group___g_a03.html#gaa479240fcad272dc505ae50a6f4369d3',1,'BK108X']]], 18 | ['setdelayaftercrystalon_15',['setDelayAfterCrystalOn',['../group___g_a03.html#ga397b7279615925dea40dd4befa673573',1,'BK108X']]], 19 | ['setfm_16',['setFM',['../group___g_a03.html#gaa6da4291400839ffc68ccff5e1ad7b13',1,'BK108X']]], 20 | ['setfmdeemphasis_17',['setFmDeemphasis',['../group___g_a03.html#gabe69405f657c656f61e5e6b169690709',1,'BK108X']]], 21 | ['setfmgain_18',['setFMGain',['../group___g_a03.html#gaeb1a1f4d31cb789c71809102c47da5b0',1,'BK108X']]], 22 | ['setfrequency_19',['setFrequency',['../group___g_a03.html#ga514242393caa2068d8acb3adec953832',1,'BK108X']]], 23 | ['setfrequencydown_20',['setFrequencyDown',['../group___g_a03.html#ga5bf724e36f2dbdc826c387601e00ace1',1,'BK108X']]], 24 | ['setfrequencyup_21',['setFrequencyUp',['../group___g_a03.html#gac0c265a916d7852d7e4977b1835098eb',1,'BK108X']]], 25 | ['setgpio2_22',['setGpio2',['../group___g_a03.html#ga6d3ee2c4dd53cb37737770ca65e847ac',1,'BK108X']]], 26 | ['setgpio3_23',['setGpio3',['../group___g_a03.html#ga7215ad36ae1b116b5313efea09478cf3',1,'BK108X']]], 27 | ['seti2c_24',['setI2C',['../group___g_a02.html#gabb521f2af588ce1c94755bd2525f32c9',1,'BK108X']]], 28 | ['seti2caddress_25',['setI2CAddress',['../group___g_a03.html#ga46c6eb53236fb1b817147a12a94e237b',1,'BK108X']]], 29 | ['setmono_26',['setMono',['../group___g_a03.html#gabc3b9000cc833cfbec7cf1edc03ef674',1,'BK108X']]], 30 | ['setmutethreshold_27',['setMuteThreshold',['../group___g_a03.html#gaeda6bee33d55a04e09a76408812f13cb',1,'BK108X']]], 31 | ['setrds_28',['setRds',['../group___g_a04.html#gae34ef5e3d69ef41522b611dcc3ce14a0',1,'BK108X']]], 32 | ['setrds_29',['setRDS',['../group___g_a01.html#ae6fb3f9108ff9bc85382e541f256805d',1,'BK108X']]], 33 | ['setrdsmode_30',['setRdsMode',['../group___g_a04.html#gadb237cc8ad191804af5de514a5610fd9',1,'BK108X']]], 34 | ['setregister_31',['setRegister',['../group___g_a03.html#gadc64097823fe26425a420270562cfc34',1,'BK108X']]], 35 | ['setseekmute_32',['setSeekMute',['../group___g_a03.html#gafce9573202cce9a06869bead65fe9685',1,'BK108X']]], 36 | ['setseekthreshold_33',['setSeekThreshold',['../group___g_a03.html#ga2d2a246c4d65dfbf93b5660a500c74c3',1,'BK108X']]], 37 | ['setshadownregister_34',['setShadownRegister',['../group___g_a03.html#ga08ce22717a9f95e1ee3685478e919ee5',1,'BK108X']]], 38 | ['setsoftmute_35',['setSoftMute',['../group___g_a03.html#ga65342f0cf9a3ad9582b920f8d084caf8',1,'BK108X']]], 39 | ['setsoftmuteattack_36',['setSoftMuteAttack',['../group___g_a03.html#ga162198f02a87c3ed6b0fd665719248da',1,'BK108X']]], 40 | ['setsoftmuteattenuation_37',['setSoftMuteAttenuation',['../group___g_a03.html#ga966d4542de0422959750044633c5217a',1,'BK108X']]], 41 | ['setspace_38',['setSpace',['../group___g_a03.html#ga0e3272d62ec11f91251569e422cd4c58',1,'BK108X']]], 42 | ['setstereothresholdpilotstrength_39',['setStereoThresholdPilotStrength',['../group___g_a03.html#ga787b79fcfb96881a1784560393a23f12',1,'BK108X']]], 43 | ['settimecallstrengthpilot_40',['setTimeCallStrengthPilot',['../group___g_a03.html#gad4595c8678c2ec213f5034f90dc61262',1,'BK108X']]], 44 | ['setup_41',['setup',['../group___g_a03.html#gad1e862acb8dd7f8f121963c97b9e0eed',1,'BK108X']]], 45 | ['setvolume_42',['setVolume',['../group___g_a03.html#gaa91f9b57fb80f9411f97755d15e7d808',1,'BK108X']]], 46 | ['setvolumedown_43',['setVolumeDown',['../group___g_a03.html#gac2cf423a3eeee3213a3c7c73a8316f8a',1,'BK108X']]], 47 | ['setvolumeup_44',['setVolumeUp',['../group___g_a03.html#ga89438602c507ba477aaa626999210b7e',1,'BK108X']]] 48 | ]; 49 | -------------------------------------------------------------------------------- /extras/docs/html/search/functions_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['waitandfinishtune_0',['waitAndFinishTune',['../group___g_a03.html#ga157dea83c3abb71f49124252a109a383',1,'BK108X']]], 4 | ['writeregister_1',['writeRegister',['../group___g_a02.html#gaaa412587cacee78fdb6da296d97c9c74',1,'BK108X']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /extras/docs/html/search/groups_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['basic_20functions_0',['Basic Functions',['../group___g_a03.html',1,'']]], 4 | ['beken_20i2c_20bus_1',['BEKEN I2C BUS',['../group___g_a02.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /extras/docs/html/search/groups_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['rds_20functions_0',['RDS Functions',['../group___g_a04.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/docs/html/search/groups_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['tools_0',['Tools',['../group___g_a05.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/docs/html/search/groups_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['union_2c_20structure_20and_20defined_20data_20types_20_20_3cbr_3e_0',['Union, Structure and Defined Data Types <br>',['../group___g_a01.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/docs/html/search/mag.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 16 | 18 | image/svg+xml 19 | 21 | 22 | 23 | 24 | 25 | 27 | 33 | 37 | 38 | -------------------------------------------------------------------------------- /extras/docs/html/search/mag_d.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 16 | 18 | image/svg+xml 19 | 21 | 22 | 23 | 24 | 25 | 27 | 33 | 37 | 38 | -------------------------------------------------------------------------------- /extras/docs/html/search/mag_sel.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 22 | 24 | image/svg+xml 25 | 27 | 28 | 29 | 30 | 31 | 33 | 57 | 63 | 69 | 74 | 75 | -------------------------------------------------------------------------------- /extras/docs/html/search/mag_seld.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 22 | 24 | image/svg+xml 25 | 27 | 28 | 29 | 30 | 31 | 33 | 57 | 63 | 69 | 74 | 75 | -------------------------------------------------------------------------------- /extras/docs/html/search/pages_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['bk108x_20arduino_20library_20implementation_0',['BK108X Arduino Library implementation',['../index.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/docs/html/search/pages_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['todo_20list_0',['Todo List',['../todo.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/docs/html/search/searchdata.js: -------------------------------------------------------------------------------- 1 | var indexSectionsWithContent = 2 | { 3 | 0: "abcdfgimoprstuw", 4 | 1: "bw", 5 | 2: "b", 6 | 3: "acfgiprsw", 7 | 4: "bcdgmors", 8 | 5: "b", 9 | 6: "abdfimor", 10 | 7: "brtu", 11 | 8: "bt" 12 | }; 13 | 14 | var indexSectionNames = 15 | { 16 | 0: "all", 17 | 1: "classes", 18 | 2: "files", 19 | 3: "functions", 20 | 4: "variables", 21 | 5: "typedefs", 22 | 6: "defines", 23 | 7: "groups", 24 | 8: "pages" 25 | }; 26 | 27 | var indexSectionLabels = 28 | { 29 | 0: "All", 30 | 1: "Classes", 31 | 2: "Files", 32 | 3: "Functions", 33 | 4: "Variables", 34 | 5: "Typedefs", 35 | 6: "Macros", 36 | 7: "Modules", 37 | 8: "Pages" 38 | }; 39 | 40 | -------------------------------------------------------------------------------- /extras/docs/html/search/typedefs_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['bk_5freg1e_0',['bk_reg1E',['../_b_k108_x_8h.html#a13286a0f9a7d77ac48189ff15bb1eda9',1,'BK108X.h']]], 4 | ['bk_5freg1f_1',['bk_reg1F',['../_b_k108_x_8h.html#aa9f1c5ae16ae38884e7f4f7e080ea50d',1,'BK108X.h']]], 5 | ['bk_5freg20_2',['bk_reg20',['../_b_k108_x_8h.html#aa794b71b9b53b0aad3d7ff0955984e98',1,'BK108X.h']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /extras/docs/html/search/variables_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['blockb_0',['blockB',['../group___g_a01.html#a4ad8e1545e3c5762fbc9932e4bb434e0',1,'bk_rds_blockb']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/docs/html/search/variables_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['chipid_0',['chipId',['../group___g_a01.html#a76d151d53814f303d62a9b81554f9faf',1,'bk_reg01']]], 4 | ['currentamband_1',['currentAMBand',['../group___g_a01.html#a009b5daea03d9b11104054d7463b8bb7',1,'BK108X']]], 5 | ['currentamspace_2',['currentAMSpace',['../group___g_a01.html#ab8e3ce7673b3af09d84e466aa309ea9e',1,'BK108X']]], 6 | ['currentchannel_3',['currentChannel',['../group___g_a01.html#ad5c9de3dacc0da92568cb05870f777bf',1,'BK108X']]], 7 | ['currentfmband_4',['currentFMBand',['../group___g_a01.html#a30a872ef33639d695429d078e0548521',1,'BK108X']]], 8 | ['currentfmspace_5',['currentFMSpace',['../group___g_a01.html#a3d417aad563b9807c9173528450f8ef6',1,'BK108X']]], 9 | ['currentfrequency_6',['currentFrequency',['../group___g_a01.html#aa9e70b9b87d711102361d588dc38a59b',1,'BK108X']]], 10 | ['currentmode_7',['currentMode',['../group___g_a01.html#ab4864c3393eba04877776618a180b355',1,'BK108X']]], 11 | ['currentstep_8',['currentStep',['../group___g_a01.html#af86bdd3115a99a9e06c044692ed6e222',1,'BK108X']]], 12 | ['currentvolume_9',['currentVolume',['../group___g_a01.html#a637b02d5fa446097e998beda73059ac8',1,'BK108X']]] 13 | ]; 14 | -------------------------------------------------------------------------------- /extras/docs/html/search/variables_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['deviceaddress_0',['deviceAddress',['../group___g_a01.html#a91b3171ba5c52f8bbbd54277bbb2bdfe',1,'BK108X']]], 4 | ['deviceid_1',['deviceId',['../group___g_a01.html#a5f8e8adbb251053157b4a51d2a38d6bb',1,'bk_reg00']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /extras/docs/html/search/variables_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['group0_0',['group0',['../group___g_a01.html#a14e997232888e2a94a6adfec0300e046',1,'bk_rds_blockb']]], 4 | ['group2_1',['group2',['../group___g_a01.html#af8b387e92a4643b1673bb4d50eae3ccd',1,'bk_rds_blockb']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /extras/docs/html/search/variables_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['maxdelayaftercrystalon_0',['maxDelayAfterCrystalOn',['../group___g_a01.html#a84232f0a3edd1c9307e463266fc64bcb',1,'BK108X']]], 4 | ['maximumfrequency_1',['maximumFrequency',['../group___g_a01.html#a1e99e80f89544a23a58b2584570b50b9',1,'BK108X']]], 5 | ['minimumfrequency_2',['minimumFrequency',['../group___g_a01.html#ad0d12ff6d8f2b1980edf1825d68a0a67',1,'BK108X']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /extras/docs/html/search/variables_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['oscillatorfrequency_0',['oscillatorFrequency',['../group___g_a01.html#ad36cac73c8cbb3021797ee843e559aab',1,'BK108X']]], 4 | ['oscillatortype_1',['oscillatorType',['../group___g_a01.html#a50a9ac975ce0539aed15b122db83d36b',1,'BK108X']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /extras/docs/html/search/variables_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['seekinterruptpin_0',['seekInterruptPin',['../group___g_a01.html#a68b0bac67680a37773d972c470716a37',1,'BK108X']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/docs/html/splitbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/splitbar.png -------------------------------------------------------------------------------- /extras/docs/html/splitbard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/splitbard.png -------------------------------------------------------------------------------- /extras/docs/html/sync_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/sync_off.png -------------------------------------------------------------------------------- /extras/docs/html/sync_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/sync_on.png -------------------------------------------------------------------------------- /extras/docs/html/tab_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/tab_a.png -------------------------------------------------------------------------------- /extras/docs/html/tab_ad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/tab_ad.png -------------------------------------------------------------------------------- /extras/docs/html/tab_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/tab_b.png -------------------------------------------------------------------------------- /extras/docs/html/tab_bd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/tab_bd.png -------------------------------------------------------------------------------- /extras/docs/html/tab_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/tab_h.png -------------------------------------------------------------------------------- /extras/docs/html/tab_hd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/tab_hd.png -------------------------------------------------------------------------------- /extras/docs/html/tab_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/tab_s.png -------------------------------------------------------------------------------- /extras/docs/html/tab_sd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/docs/html/tab_sd.png -------------------------------------------------------------------------------- /extras/images/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/.DS_Store -------------------------------------------------------------------------------- /extras/images/BK1088E_01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/BK1088E_01.jpg -------------------------------------------------------------------------------- /extras/images/BK1088_pinout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/BK1088_pinout.png -------------------------------------------------------------------------------- /extras/images/UNO_SHIELD_01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/UNO_SHIELD_01.jpg -------------------------------------------------------------------------------- /extras/images/UNO_SHIELD_02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/UNO_SHIELD_02.jpg -------------------------------------------------------------------------------- /extras/images/UNO_SHIELD_03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/UNO_SHIELD_03.jpg -------------------------------------------------------------------------------- /extras/images/UNO_SHIELD_04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/UNO_SHIELD_04.jpg -------------------------------------------------------------------------------- /extras/images/UNO_SHIELD_05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/UNO_SHIELD_05.jpg -------------------------------------------------------------------------------- /extras/images/UNO_SHIELD_07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/UNO_SHIELD_07.jpg -------------------------------------------------------------------------------- /extras/images/UNO_SHIELD_08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/UNO_SHIELD_08.jpg -------------------------------------------------------------------------------- /extras/images/basic_circuit_from_beken.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/basic_circuit_from_beken.png -------------------------------------------------------------------------------- /extras/images/basic_schematic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/basic_schematic.png -------------------------------------------------------------------------------- /extras/images/bk1088_functional_block_diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/bk1088_functional_block_diagram.png -------------------------------------------------------------------------------- /extras/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/logo.png -------------------------------------------------------------------------------- /extras/images/photo_A01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/photo_A01.png -------------------------------------------------------------------------------- /extras/images/photo_A02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/photo_A02.png -------------------------------------------------------------------------------- /extras/images/photo_A03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/photo_A03.png -------------------------------------------------------------------------------- /extras/images/photo_B01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/photo_B01.png -------------------------------------------------------------------------------- /extras/images/photo_B02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/photo_B02.png -------------------------------------------------------------------------------- /extras/images/photo_B03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/photo_B03.png -------------------------------------------------------------------------------- /extras/images/prototype_01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/prototype_01.jpg -------------------------------------------------------------------------------- /extras/images/prototype_02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/prototype_02.jpg -------------------------------------------------------------------------------- /extras/images/schematic_esp32_lcd16x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/schematic_esp32_lcd16x2.png -------------------------------------------------------------------------------- /extras/images/schematic_pro_mini_TFT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/schematic_pro_mini_TFT.png -------------------------------------------------------------------------------- /extras/images/under_construction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pu2clr/BK108X/61fa31630d461f15d3b451dc14ac25b334f105cc/extras/images/under_construction.png -------------------------------------------------------------------------------- /keywords.txt: -------------------------------------------------------------------------------- 1 | ################################################################## 2 | # Syntax Coloring Map 3 | ################################################################## 4 | # Datatypes (KEYWORD1) 5 | BK108X KEYWORD1 6 | 7 | # Methods (KEYWORD2) 8 | 9 | BK108X KEYWORD2 10 | setup KEYWORD2 11 | reset KEYWORD2 12 | setRegister KEYWORD2 13 | getRegister KEYWORD2 14 | setFM KEYWORD2 15 | setAM KEYWORD2 16 | setStep KEYWORD2 17 | setFrequency KEYWORD2 18 | frequencyUp KEYWORD2 19 | frequencyDown KEYWORD2 20 | setAntennaTuneCapacitor KEYWORD2 21 | setStep KEYWORD2 22 | setVolumeDialModeOff KEYWORD2 23 | setVolumeDialModeOn KEYWORD2 24 | setTuneDialModeOff KEYWORD2 25 | setTuneDialModeOn KEYWORD2 26 | isCrystalReady KEYWORD2 27 | setReferenceClockType KEYWORD2 28 | setI2CBusAddress KEYWORD2 29 | getDeviceId KEYWORD2 30 | setAudioBass KEYWORD2 31 | setAudioGain KEYWORD2 32 | isFmStereo KEYWORD2 33 | getAmRssi KEYWORD2 34 | getFmRssi KEYWORD2 35 | setDeEmphasis KEYWORD2 36 | setAmAfc KEYWORD2 37 | setAmSpace KEYWORD2 38 | setAmBandwidth KEYWORD2 39 | setFrequencyUp KEYWORD2 40 | setFrequencyDown KEYWORD2 41 | getAmCurrentChannel KEYWORD2 42 | getFmCurrentChannel KEYWORD2 43 | getFrequency KEYWORD2 44 | setLeftChannelInverseControl KEYWORD2 45 | 46 | 47 | #Literals 48 | 49 | REG01 LITERAL1 50 | REG02 LITERAL1 51 | REG03 LITERAL1 52 | REG04 LITERAL1 53 | REG05 LITERAL1 54 | REG06 LITERAL1 55 | REG07 LITERAL1 56 | REG08 LITERAL1 57 | REG09 LITERAL1 58 | REG0A LITERAL1 59 | REG0B LITERAL1 60 | REG0C LITERAL1 61 | REG0D LITERAL1 62 | REG0E LITERAL1 63 | REG0F LITERAL1 64 | REG10 LITERAL1 65 | REG11 LITERAL1 66 | REG12 LITERAL1 67 | REG13 LITERAL1 68 | REG14 LITERAL1 69 | REG15 LITERAL1 70 | REG16 LITERAL1 71 | REG17 LITERAL1 72 | REG18 LITERAL1 73 | REG19 LITERAL1 74 | REG1A LITERAL1 75 | REG1B LITERAL1 76 | REG1C LITERAL1 77 | REG1D LITERAL1 78 | REG1E LITERAL1 79 | REG1F LITERAL1 80 | OSCILLATOR_TYPE_CRYSTAL LITERAL1 81 | OSCILLATOR_TYPE_REFCLK LITERAL1 82 | BK_SEEK_DOWN LITERAL1 83 | BK_SEEK_UP LITERAL1 84 | BK_SEEK_WRAP LITERAL1 85 | BK_SEEK_STOP LITERAL1 86 | BK_MODE_FM LITERAL1 87 | BK_MODE_AM LITERAL1 88 | 89 | -------------------------------------------------------------------------------- /library.properties: -------------------------------------------------------------------------------- 1 | name=PU2CLR BK108X 2 | version=1.0.6 3 | author=Ricardo Lima Caratti, pu2clr@gmail.com 4 | maintainer=Ricardo Lima Caratti 5 | sentence=Control your BK1086 and BK1088 BROADCAST FM, AM (LW, MW and SW) RECEIVER. 6 | paragraph=This library provides an easier interface to control the IC BK1086/88 device. 7 | category=Device Control 8 | url=https://github.com/pu2clr/BK108X 9 | includes=BK108X.h 10 | architectures=* 11 | -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Ricardo Lima Caratti 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE ARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | 11 | --------------------------------------------------------------------------------