mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2025-12-06 11:36:59 +03:00
Merge remote-tracking branch 'origin/master' into master-cmake
Conflicts: README.md build-scripts/ESP32-A1S-sdkconfig.defaults build-scripts/I2S-4MFlash-sdkconfig.defaults build-scripts/NonOTA-I2S-4MFlash-sdkconfig.defaults build-scripts/NonOTA-SqueezeAmp-sdkconfig.defaults build-scripts/SqueezeAmp4MBFlash-sdkconfig.defaults build-scripts/SqueezeAmp8MBFlash-sdkconfig.defaults
This commit is contained in:
20
README.md
20
README.md
@@ -10,16 +10,17 @@ Works with [ESP32-A1S](https://docs.ai-thinker.com/esp32-a1s) module that includ
|
||||
|
||||
The board showed above has the following IO set
|
||||
- amplifier: GPIO21
|
||||
- key2: GPIO13, key3: GPIO19, key4: GPIO23, key5: GPIO18, key6: GPIO5 (to be confirmed width dipswitches)
|
||||
- key2: GPIO13, key3: GPIO19, key4: GPIO23, key5: GPIO18, key6: GPIO5 (to be confirmed with dip switches)
|
||||
- key1: not sure, something with GPIO36
|
||||
- jack insertion: GPIO39 (inserted low)
|
||||
- LED: GPIO22 (active low)
|
||||
(note that GPIO need pullups)
|
||||
|
||||
So a possible config would be
|
||||
- set_GPIO: 21=amp,22=green:0,39=jack:0
|
||||
- a button mapping:
|
||||
```
|
||||
[{"gpio":5,"normal":{"pressed":"ACTRLS_TOGGLE"}},{"gpio":18,"shifter_gpio":5,"normal":{"pressed":"ACTRLS_VOLUP"}, "shifted":{"pressed":"ACTRLS_NEXT"}}, {"gpio":23,"shifter_gpio":5,"normal":{"pressed":"ACTRLS_VOLDOWN"},"shifted":{"pressed":"ACTRLS_PREV"}}]
|
||||
[{"gpio":5,"normal":{"pressed":"ACTRLS_TOGGLE"}},{"gpio":18,"pull":true,"shifter_gpio":5,"normal":{"pressed":"ACTRLS_VOLUP"}, "shifted":{"pressed":"ACTRLS_NEXT"}}, {"gpio":23,"pull":true,"shifter_gpio":5,"normal":{"pressed":"ACTRLS_VOLDOWN"},"shifted":{"pressed":"ACTRLS_PREV"}}]
|
||||
```
|
||||
|
||||
### ESP32-WROVER + I2S DAC
|
||||
@@ -249,11 +250,19 @@ The above command will mount this repo into the docker container and start a bas
|
||||
for you to then follow the below build steps
|
||||
|
||||
### Manual Install of ESP-IDF
|
||||
<<<<<<< HEAD
|
||||
Follow the instructions from https://docs.espressif.com/projects/esp-idf/en/v4.0/get-started/index.html to install the esp-idf v4.0. This is the currently supported release of the espressif software development system.
|
||||
=======
|
||||
<strong>Currently the master branch of this project requires this [IDF](https://github.com/espressif/esp-idf/tree/28f1cdf5ed7149d146ad5019c265c8bc3bfa2ac9) with gcc 5.2 (toolschain dated 20181001)
|
||||
If you want to use a more recent version of gcc and IDF (4.0 stable), move to cmake-master branch</strong>
|
||||
|
||||
You can install IDF manually on Linux or Windows (using the Subsystem for Linux) following the instructions at: https://www.instructables.com/id/ESP32-Development-on-Windows-Subsystem-for-Linux/
|
||||
And then copying the i2s.c patch file from this repo over to the esp-idf folder
|
||||
You also need to use esp-dsp recent version or at least make sure you have this patch https://github.com/espressif/esp-dsp/pull/12/commits/8b082c1071497d49346ee6ed55351470c1cb4264
|
||||
>>>>>>> refs/remotes/origin/master
|
||||
|
||||
## Building Squeezelite-esp32
|
||||
MOST IMPORTANT: create the right default config file
|
||||
- for all libraries, add -mlongcalls.
|
||||
- make defconfig
|
||||
(Note: You can also copy over config files from the build-scripts folder to ./sdkconfig)
|
||||
Then adapt the config file to your wifi/BT/I2C device (can also be done on the command line)
|
||||
@@ -268,7 +277,7 @@ idf.py -p PORT [-b BAUD] monitor
|
||||
|
||||
# Configuration
|
||||
1/ setup WiFi
|
||||
- Boot the esp, look for a new wifi access point showing up and connect to it. Default build ssid and passwords are "squeezelite"/"squeezelite".
|
||||
- Boot the esp, look for a new wifi access point showing up and connect to it. Default build ssid and passwords are "squeezelite"/"squeezelite".
|
||||
- Once connected, navigate to 192.168.4.1
|
||||
- Wait for the list of access points visible from the device to populate in the web page.
|
||||
- Choose an access point and enter any credential as needed
|
||||
@@ -315,8 +324,7 @@ See squeezlite command line, but keys options are
|
||||
|
||||
## Additional misc notes to do you build
|
||||
- as of this writing, ESP-IDF has a bug int he way the PLL values are calculated for i2s, so you *must* use the i2s.c file in the patch directory
|
||||
- for all libraries, add -mlongcalls.
|
||||
- audio libraries are complicated to rebuild, open an issue if you really want to
|
||||
- for codecs libraries, add -mlongcalls if you want to rebuild them, but you should not (use the provided ones in codecs/lib). if you really want to rebuild them, open an issue
|
||||
- libmad, libflac (no esp's version), libvorbis (tremor - not esp's version), alac work
|
||||
- libfaad does not really support real time, but if you want to try
|
||||
- -O3 -DFIXED_POINT -DSMALL_STACK
|
||||
|
||||
@@ -171,8 +171,183 @@ CONFIG_BT_A2DP_ENABLE=y
|
||||
# CONFIG_BT_SPP_ENABLED is not set
|
||||
# CONFIG_BT_HFP_ENABLE is not set
|
||||
CONFIG_BT_SSP_ENABLED=y
|
||||
<<<<<<< HEAD
|
||||
# CONFIG_BT_BLE_ENABLED is not set
|
||||
CONFIG_BT_STACK_NO_LOG=y
|
||||
=======
|
||||
CONFIG_BT_BLE_ENABLED=n
|
||||
CONFIG_BT_BLE_SMP_ENABLE=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_HCI_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_HCI_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTM_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTM_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_L2CAP_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_L2CAP_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_SDP_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_SDP_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_GAP_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_GAP_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BNEP_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BNEP_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_PAN_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_PAN_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_A2D_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_A2D_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVDT_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVDT_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVCT_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVCT_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVRC_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVRC_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_MCA_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_MCA_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_HID_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_HID_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_APPL_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_APPL_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_GATT_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_GATT_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_SMP_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_SMP_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTIF_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTIF_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTC_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTC_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_OSI_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_OSI_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BLUFI_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BLUFI_TRACE_LEVEL=2
|
||||
>>>>>>> refs/remotes/origin/master
|
||||
CONFIG_BT_ACL_CONNECTIONS=4
|
||||
CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST=y
|
||||
CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY=y
|
||||
@@ -446,11 +621,19 @@ CONFIG_LWIP_MAX_SOCKETS=16
|
||||
# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set
|
||||
CONFIG_LWIP_SO_REUSE=y
|
||||
CONFIG_LWIP_SO_REUSE_RXTOALL=y
|
||||
<<<<<<< HEAD
|
||||
# CONFIG_LWIP_SO_RCVBUF is not set
|
||||
# CONFIG_LWIP_IP_REASSEMBLY is not set
|
||||
# CONFIG_LWIP_IP_FRAG is not set
|
||||
# CONFIG_LWIP_STATS is not set
|
||||
# CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set
|
||||
=======
|
||||
CONFIG_LWIP_IP_REASSEMBLY=y
|
||||
|
||||
|
||||
|
||||
|
||||
>>>>>>> refs/remotes/origin/master
|
||||
CONFIG_LWIP_ESP_GRATUITOUS_ARP=y
|
||||
CONFIG_LWIP_GARP_TMR_INTERVAL=60
|
||||
CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32
|
||||
|
||||
@@ -172,8 +172,183 @@ CONFIG_BT_A2DP_ENABLE=y
|
||||
# CONFIG_BT_SPP_ENABLED is not set
|
||||
# CONFIG_BT_HFP_ENABLE is not set
|
||||
CONFIG_BT_SSP_ENABLED=y
|
||||
<<<<<<< HEAD
|
||||
# CONFIG_BT_BLE_ENABLED is not set
|
||||
CONFIG_BT_STACK_NO_LOG=y
|
||||
=======
|
||||
CONFIG_BT_BLE_ENABLED=n
|
||||
CONFIG_BT_BLE_SMP_ENABLE=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_HCI_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_HCI_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTM_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTM_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_L2CAP_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_L2CAP_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_SDP_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_SDP_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_GAP_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_GAP_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BNEP_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BNEP_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_PAN_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_PAN_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_A2D_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_A2D_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVDT_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVDT_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVCT_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVCT_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVRC_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVRC_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_MCA_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_MCA_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_HID_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_HID_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_APPL_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_APPL_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_GATT_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_GATT_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_SMP_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_SMP_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTIF_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTIF_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTC_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTC_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_OSI_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_OSI_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BLUFI_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BLUFI_TRACE_LEVEL=2
|
||||
>>>>>>> refs/remotes/origin/master
|
||||
CONFIG_BT_ACL_CONNECTIONS=4
|
||||
CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST=y
|
||||
CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY=y
|
||||
@@ -450,11 +625,19 @@ CONFIG_LWIP_MAX_SOCKETS=16
|
||||
# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set
|
||||
CONFIG_LWIP_SO_REUSE=y
|
||||
CONFIG_LWIP_SO_REUSE_RXTOALL=y
|
||||
<<<<<<< HEAD
|
||||
# CONFIG_LWIP_SO_RCVBUF is not set
|
||||
# CONFIG_LWIP_IP_FRAG is not set
|
||||
# CONFIG_LWIP_IP_REASSEMBLY is not set
|
||||
# CONFIG_LWIP_STATS is not set
|
||||
# CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set
|
||||
=======
|
||||
CONFIG_LWIP_IP_REASSEMBLY=y
|
||||
|
||||
|
||||
|
||||
|
||||
>>>>>>> refs/remotes/origin/master
|
||||
CONFIG_LWIP_ESP_GRATUITOUS_ARP=y
|
||||
CONFIG_LWIP_GARP_TMR_INTERVAL=60
|
||||
CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32
|
||||
|
||||
1165
build-scripts/NonOTA-I2S-4MFlash-sdkconfig.defaults
Normal file
1165
build-scripts/NonOTA-I2S-4MFlash-sdkconfig.defaults
Normal file
File diff suppressed because it is too large
Load Diff
1164
build-scripts/NonOTA-SqueezeAmp-sdkconfig.defaults
Normal file
1164
build-scripts/NonOTA-SqueezeAmp-sdkconfig.defaults
Normal file
File diff suppressed because it is too large
Load Diff
@@ -185,8 +185,183 @@ CONFIG_BT_A2DP_ENABLE=y
|
||||
# CONFIG_BT_SPP_ENABLED is not set
|
||||
# CONFIG_BT_HFP_ENABLE is not set
|
||||
CONFIG_BT_SSP_ENABLED=y
|
||||
<<<<<<< HEAD
|
||||
# CONFIG_BT_BLE_ENABLED is not set
|
||||
CONFIG_BT_STACK_NO_LOG=y
|
||||
=======
|
||||
CONFIG_BT_BLE_ENABLED=n
|
||||
CONFIG_BT_BLE_SMP_ENABLE=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_HCI_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_HCI_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTM_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTM_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_L2CAP_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_L2CAP_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_SDP_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_SDP_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_GAP_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_GAP_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BNEP_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BNEP_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_PAN_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_PAN_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_A2D_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_A2D_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVDT_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVDT_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVCT_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVCT_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVRC_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVRC_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_MCA_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_MCA_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_HID_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_HID_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_APPL_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_APPL_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_GATT_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_GATT_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_SMP_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_SMP_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTIF_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTIF_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTC_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTC_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_OSI_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_OSI_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BLUFI_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BLUFI_TRACE_LEVEL=2
|
||||
>>>>>>> refs/remotes/origin/master
|
||||
CONFIG_BT_ACL_CONNECTIONS=4
|
||||
CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST=y
|
||||
CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY=y
|
||||
@@ -459,11 +634,19 @@ CONFIG_LWIP_MAX_SOCKETS=16
|
||||
# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set
|
||||
CONFIG_LWIP_SO_REUSE=y
|
||||
CONFIG_LWIP_SO_REUSE_RXTOALL=y
|
||||
<<<<<<< HEAD
|
||||
# CONFIG_LWIP_SO_RCVBUF is not set
|
||||
# CONFIG_LWIP_IP_FRAG is not set
|
||||
# CONFIG_LWIP_IP_REASSEMBLY is not set
|
||||
# CONFIG_LWIP_STATS is not set
|
||||
# CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set
|
||||
=======
|
||||
CONFIG_LWIP_IP_REASSEMBLY=y
|
||||
|
||||
|
||||
|
||||
|
||||
>>>>>>> refs/remotes/origin/master
|
||||
CONFIG_LWIP_ESP_GRATUITOUS_ARP=y
|
||||
CONFIG_LWIP_GARP_TMR_INTERVAL=60
|
||||
CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32
|
||||
|
||||
@@ -184,6 +184,7 @@ CONFIG_BT_A2DP_ENABLE=y
|
||||
# CONFIG_BT_SPP_ENABLED is not set
|
||||
# CONFIG_BT_HFP_ENABLE is not set
|
||||
CONFIG_BT_SSP_ENABLED=y
|
||||
<<<<<<< HEAD
|
||||
|
||||
|
||||
|
||||
@@ -194,6 +195,180 @@ CONFIG_BT_SSP_ENABLED=y
|
||||
|
||||
|
||||
CONFIG_BT_STACK_NO_LOG=y
|
||||
=======
|
||||
CONFIG_BT_BLE_ENABLED=n
|
||||
CONFIG_BT_BLE_SMP_ENABLE=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_HCI_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_HCI_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTM_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTM_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_L2CAP_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_L2CAP_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_SDP_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_SDP_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_GAP_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_GAP_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BNEP_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BNEP_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_PAN_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_PAN_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_A2D_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_A2D_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVDT_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVDT_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVCT_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVCT_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVRC_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_AVRC_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_MCA_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_MCA_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_HID_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_HID_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_APPL_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_APPL_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_GATT_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_GATT_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_SMP_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_SMP_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTIF_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTIF_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTC_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BTC_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_OSI_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_OSI_TRACE_LEVEL=2
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BLUFI_TRACE_LEVEL_WARNING=y
|
||||
|
||||
|
||||
|
||||
|
||||
CONFIG_BT_LOG_BLUFI_TRACE_LEVEL=2
|
||||
>>>>>>> refs/remotes/origin/master
|
||||
CONFIG_BT_ACL_CONNECTIONS=4
|
||||
CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST=y
|
||||
CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY=y
|
||||
@@ -466,11 +641,19 @@ CONFIG_LWIP_MAX_SOCKETS=16
|
||||
# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set
|
||||
CONFIG_LWIP_SO_REUSE=y
|
||||
CONFIG_LWIP_SO_REUSE_RXTOALL=y
|
||||
<<<<<<< HEAD
|
||||
# CONFIG_LWIP_SO_RCVBUF is not set
|
||||
# CONFIG_LWIP_IP_FRAG is not set
|
||||
# CONFIG_LWIP_IP_REASSEMBLY is not set
|
||||
# CONFIG_LWIP_STATS is not set
|
||||
# CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set
|
||||
=======
|
||||
CONFIG_LWIP_IP_REASSEMBLY=y
|
||||
|
||||
|
||||
|
||||
|
||||
>>>>>>> refs/remotes/origin/master
|
||||
CONFIG_LWIP_ESP_GRATUITOUS_ARP=y
|
||||
CONFIG_LWIP_GARP_TMR_INTERVAL=60
|
||||
CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32
|
||||
|
||||
@@ -10,7 +10,6 @@ add_prebuilt_library(libvorbisidec lib/libvorbisidec.a )
|
||||
add_prebuilt_library(libogg lib/libogg.a )
|
||||
add_prebuilt_library(libalac lib/libalac.a )
|
||||
add_prebuilt_library(libremple16 lib/libresample16.a )
|
||||
add_prebuilt_library(libsoxr lib/libsoxr.a )
|
||||
add_prebuilt_library(libopusfile lib/libopusfile.a )
|
||||
add_prebuilt_library(libopus lib/libopus.a )
|
||||
target_link_libraries(${COMPONENT_LIB} PRIVATE libmad)
|
||||
@@ -21,6 +20,5 @@ target_link_libraries(${COMPONENT_LIB} PRIVATE libvorbisidec)
|
||||
target_link_libraries(${COMPONENT_LIB} PRIVATE libogg)
|
||||
target_link_libraries(${COMPONENT_LIB} PRIVATE libalac)
|
||||
target_link_libraries(${COMPONENT_LIB} PRIVATE libremple16)
|
||||
target_link_libraries(${COMPONENT_LIB} PRIVATE libsoxr)
|
||||
target_link_libraries(${COMPONENT_LIB} PRIVATE libopusfile)
|
||||
target_link_libraries(${COMPONENT_LIB} PRIVATE libopus)
|
||||
|
||||
Binary file not shown.
374
components/display/ILI9341.c
Normal file
374
components/display/ILI9341.c
Normal file
@@ -0,0 +1,374 @@
|
||||
/**
|
||||
* Copyright (c) 2017-2018 Tara Keeling
|
||||
* 2020 Philippe G.
|
||||
*
|
||||
* This software is released under the MIT License.
|
||||
* https://opensource.org/licenses/MIT
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
#include "driver/gpio.h"
|
||||
|
||||
#include <esp_heap_caps.h>
|
||||
#include <esp_log.h>
|
||||
|
||||
#include "gds.h"
|
||||
#include "gds_private.h"
|
||||
|
||||
//#define SHADOW_BUFFER
|
||||
#define PAGE_BLOCK 1024
|
||||
|
||||
#define min(a,b) (((a) < (b)) ? (a) : (b))
|
||||
|
||||
static char TAG[] = "ILI9341";
|
||||
|
||||
|
||||
#define L1_CMD_NOP 0X00
|
||||
#define L1_CMD_SOFTWARE_RESET 0X01
|
||||
#define L1_CMD_READ_DISPLAY_IDENTIFICATION_INFORMATION 0X04
|
||||
#define L1_CMD_READ_DISPLAY_STATUS 0X09
|
||||
#define L1_CMD_READ_DISPLAY_POWER_MODE 0X0A
|
||||
#define L1_CMD_READ_DISPLAY_MADCTL 0X0B
|
||||
#define L1_CMD_READ_DISPLAY_PIXEL_FORMAT 0X0C
|
||||
#define L1_CMD_READ_DISPLAY_IMAGE_FORMAT 0X0D
|
||||
#define L1_CMD_READ_DISPLAY_SIGNAL_MODE 0X0E
|
||||
#define L1_CMD_READ_DISPLAY_SELF_DIAGNOSTIC_RESULT 0X0F
|
||||
#define L1_CMD_ENTER_SLEEP_MODE 0X10
|
||||
#define L1_CMD_SLEEP_OUT 0X11
|
||||
#define L1_CMD_PARTIAL_MODE_ON 0X12
|
||||
#define L1_CMD_NORMAL_DISPLAY_MODE_ON 0X13
|
||||
#define L1_CMD_DISPLAY_INVERSION_OFF 0X20
|
||||
#define L1_CMD_DISPLAY_INVERSION_ON 0X21
|
||||
#define L1_CMD_GAMMA_SET 0X26
|
||||
#define L1_CMD_DISPLAY_OFF 0X28
|
||||
#define L1_CMD_DISPLAY_ON 0X29
|
||||
#define L1_CMD_COLUMN_ADDRESS_SET 0X2A
|
||||
#define L1_CMD_PAGE_ADDRESS_SET 0X2B
|
||||
#define L1_CMD_MEMORY_WRITE 0X2C
|
||||
#define L1_CMD_COLOR_SET 0X2D
|
||||
#define L1_CMD_MEMORY_READ 0X2E
|
||||
#define L1_CMD_PARTIAL_AREA 0X30
|
||||
#define L1_CMD_VERTICAL_SCROLLING_DEFINITION 0X33
|
||||
#define L1_CMD_TEARING_EFFECT_LINE_OFF 0X34
|
||||
#define L1_CMD_TEARING_EFFECT_LINE_ON 0X35
|
||||
#define L1_CMD_MEMORY_ACCESS_CONTROL 0X36
|
||||
#define L1_CMD_VERTICAL_SCROLLING_START_ADDRESS 0X37
|
||||
#define L1_CMD_IDLE_MODE_OFF 0X38
|
||||
#define L1_CMD_IDLE_MODE_ON 0X39
|
||||
#define L1_CMD_COLMOD_PIXEL_FORMAT_SET 0X3A
|
||||
#define L1_CMD_WRITE_MEMORY_CONTINUE 0X3C
|
||||
#define L1_CMD_READ_MEMORY_CONTINUE 0X3E
|
||||
#define L1_CMD_SET_TEAR_SCANLINE 0X44
|
||||
#define L1_CMD_GET_SCANLINE 0X45
|
||||
#define L1_CMD_WRITE_DISPLAY_BRIGHTNESS 0X51
|
||||
#define L1_CMD_READ_DISPLAY_BRIGHTNESS 0X52
|
||||
#define L1_CMD_WRITE_CTRL_DISPLAY 0X53
|
||||
#define L1_CMD_READ_CTRL_DISPLAY 0X54
|
||||
#define L1_CMD_WRITE_CONTENT_ADAPTIVE_BRIGHTNESS_CONTROL 0X55
|
||||
#define L1_CMD_READ_CONTENT_ADAPTIVE_BRIGHTNESS_CONTROL 0X56
|
||||
#define L1_CMD_WRITE_CABC_MINIMUM_BRIGHTNESS 0X5E
|
||||
#define L1_CMD_READ_CABC_MINIMUM_BRIGHTNESS 0X5F
|
||||
#define L1_CMD_READ_ID1 0XDA
|
||||
#define L1_CMD_READ_ID2 0XDB
|
||||
#define L1_CMD_READ_ID3 0XDC
|
||||
|
||||
#define L2_CMD_RGB_INTERFACE_SIGNAL_CONTROL 0XB0
|
||||
#define L2_CMD_FRAME_RATE_CONTROL_IN_NORMAL_MODE_FULL_COLORS 0XB1
|
||||
#define L2_CMD_FRAME_RATE_CONTROL_IN_IDLE_MODE_8_COLORS 0XB2
|
||||
#define L2_CMD_FRAME_RATE_CONTROL_IN_PARTIAL_MODE_FULL_COLORS 0XB3
|
||||
#define L2_CMD_DISPLAY_INVERSION_CONTROL 0XB4
|
||||
#define L2_CMD_BLANKING_PORCH_CONTROL 0XB5
|
||||
#define L2_CMD_DISPLAY_FUNCTION_CONTROL 0XB6
|
||||
#define L2_CMD_ENTRY_MODE_SET 0XB7
|
||||
#define L2_CMD_BACKLIGHT_CONTROL_1 0XB8
|
||||
#define L2_CMD_BACKLIGHT_CONTROL_2 0XB9
|
||||
#define L2_CMD_BACKLIGHT_CONTROL_3 0XBA
|
||||
#define L2_CMD_BACKLIGHT_CONTROL_4 0XBB
|
||||
#define L2_CMD_BACKLIGHT_CONTROL_5 0XBC
|
||||
#define L2_CMD_BACKLIGHT_CONTROL_7 0XBE
|
||||
#define L2_CMD_BACKLIGHT_CONTROL_8 0XBF
|
||||
#define L2_CMD_POWER_CONTROL_1 0XC0
|
||||
#define L2_CMD_POWER_CONTROL_2 0XC1
|
||||
#define L2_CMD_VCOM_CONTROL_1 0XC5
|
||||
#define L2_CMD_VCOM_CONTROL_2 0XC7
|
||||
#define L2_CMD_NV_MEMORY_WRITE 0XD0
|
||||
#define L2_CMD_NV_MEMORY_PROTECTION_KEY 0XD1
|
||||
#define L2_CMD_NV_MEMORY_STATUS_READ 0XD2
|
||||
#define L2_CMD_READ_ID4 0XD3
|
||||
#define L2_CMD_POSITIVE_GAMMA_CORRECTION 0XE0
|
||||
#define L2_CMD_NEGATIVE_GAMMA_CORRECTION 0XE1
|
||||
#define L2_CMD_DIGITAL_GAMMA_CONTROL_1 0XE2
|
||||
#define L2_CMD_DIGITAL_GAMMA_CONTROL_2 0XE3
|
||||
#define L2_CMD_INTERFACE_CONTROL 0XF6
|
||||
|
||||
|
||||
|
||||
/*
|
||||
The LCD needs a bunch of command/argument values to be initialized. They are stored in this struct.
|
||||
*/
|
||||
typedef struct {
|
||||
uint8_t cmd;
|
||||
uint8_t data[16];
|
||||
uint8_t databytes; //No of data in data; bit 7 = delay after set; 0xFF = end of cmds.
|
||||
} lcd_init_cmd_t;
|
||||
|
||||
|
||||
|
||||
static const lcd_init_cmd_t ili_init_cmds[]={
|
||||
/* Power contorl B, power control = 0, DC_ENA = 1 */
|
||||
{0xCF, {0x00, 0x83, 0X30}, 3},
|
||||
/* Power on sequence control,
|
||||
* cp1 keeps 1 frame, 1st frame enable
|
||||
* vcl = 0, ddvdh=3, vgh=1, vgl=2
|
||||
* DDVDH_ENH=1
|
||||
*/
|
||||
{0xED, {0x64, 0x03, 0X12, 0X81}, 4},
|
||||
/* Driver timing control A,
|
||||
* non-overlap=default +1
|
||||
* EQ=default - 1, CR=default
|
||||
* pre-charge=default - 1
|
||||
*/
|
||||
{0xE8, {0x85, 0x01, 0x79}, 3},
|
||||
/* Power control A, Vcore=1.6V, DDVDH=5.6V */
|
||||
{0xCB, {0x39, 0x2C, 0x00, 0x34, 0x02}, 5},
|
||||
/* Pump ratio control, DDVDH=2xVCl */
|
||||
{0xF7, {0x20}, 1},
|
||||
/* Driver timing control, all=0 unit */
|
||||
{0xEA, {0x00, 0x00}, 2},
|
||||
/* Power control 1, GVDD=4.75V */
|
||||
{0xC0, {0x26}, 1},
|
||||
/* Power control 2, DDVDH=VCl*2, VGH=VCl*7, VGL=-VCl*3 */
|
||||
{0xC1, {0x11}, 1},
|
||||
/* VCOM control 1, VCOMH=4.025V, VCOML=-0.950V */
|
||||
{0xC5, {0x35, 0x3E}, 2},
|
||||
/* VCOM control 2, VCOMH=VMH-2, VCOML=VML-2 */
|
||||
{0xC7, {0xBE}, 1},
|
||||
/* Memory access contorl, MX=MY=0, MV=1, ML=0, BGR=1, MH=0 */
|
||||
{0x36, {0x28}, 1},
|
||||
/* Pixel format, 16bits/pixel for RGB/MCU interface */
|
||||
{0x3A, {0x55}, 1},
|
||||
/* Frame rate control, f=fosc, 70Hz fps */
|
||||
{0xB1, {0x00, 0x1B}, 2},
|
||||
/* Enable 3G, disabled */
|
||||
{0xF2, {0x08}, 1},
|
||||
/* Gamma set, curve 1 */
|
||||
{0x26, {0x01}, 1},
|
||||
/* Positive gamma correction */
|
||||
{0xE0, {0x1F, 0x1A, 0x18, 0x0A, 0x0F, 0x06, 0x45, 0X87, 0x32, 0x0A, 0x07, 0x02, 0x07, 0x05, 0x00}, 15},
|
||||
/* Negative gamma correction */
|
||||
{0XE1, {0x00, 0x25, 0x27, 0x05, 0x10, 0x09, 0x3A, 0x78, 0x4D, 0x05, 0x18, 0x0D, 0x38, 0x3A, 0x1F}, 15},
|
||||
/* Column address set, SC=0, EC=0xEF */
|
||||
{0x2A, {0x00, 0x00, 0x00, 0xEF}, 4},
|
||||
/* Page address set, SP=0, EP=0x013F */
|
||||
{0x2B, {0x00, 0x00, 0x01, 0x3f}, 4},
|
||||
/* Memory write */
|
||||
{0x2C, {0}, 0},
|
||||
/* Entry mode set, Low vol detect disabled, normal display */
|
||||
{0xB7, {0x07}, 1},
|
||||
/* Display function control */
|
||||
{0xB6, {0x0A, 0x82, 0x27, 0x00}, 4},
|
||||
/* Sleep out */
|
||||
{0x11, {0}, 0x80},
|
||||
/* Display on */
|
||||
{0x29, {0}, 0x80},
|
||||
{0, {0}, 0xff},
|
||||
};
|
||||
|
||||
//To speed up transfers, every SPI transfer sends a bunch of lines. This define specifies how many. More means more memory use,
|
||||
//but less overhead for setting up / finishing transfers. Make sure 240 is dividable by this.
|
||||
#define PARALLEL_LINES 16
|
||||
|
||||
struct PrivateSpace {
|
||||
uint8_t *iRAM, *Shadowbuffer;
|
||||
uint8_t ReMap, PageSize;
|
||||
uint8_t Offset;
|
||||
};
|
||||
|
||||
// Functions are not declared to minimize # of lines
|
||||
|
||||
static void WriteDataByte( struct GDS_Device* Device, uint8_t Data ) {
|
||||
Device->WriteData( Device, &Data, 1);
|
||||
}
|
||||
|
||||
static void SetColumnAddress( struct GDS_Device* Device, uint8_t Start, uint8_t End ) {
|
||||
Device->WriteCommand( Device, L1_CMD_COLUMN_ADDRESS_SET );
|
||||
Device->WriteData( Device, &Start, 1 );
|
||||
Device->WriteData( Device, &End, 1 );
|
||||
}
|
||||
static void SetRowAddress( struct GDS_Device* Device, uint8_t Start, uint8_t End ) {
|
||||
Device->WriteCommand( Device, L1_CMD_PAGE_ADDRESS_SET );
|
||||
Device->WriteData( Device, &Start, 1 );
|
||||
Device->WriteData( Device, &End, 1 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void Update( struct GDS_Device* Device ) {
|
||||
struct PrivateSpace *Private = (struct PrivateSpace*) Device->Private;
|
||||
|
||||
//SetColumnAddress( Device, Private->Offset, Private->Offset + Device->Width / 4 - 1);
|
||||
SetColumnAddress( Device, Private->Offset, Private->Offset + Device->Width - 1);
|
||||
|
||||
#ifdef SHADOW_BUFFER
|
||||
uint16_t *optr = (uint16_t*) Private->Shadowbuffer, *iptr = (uint16_t*) Device->Framebuffer;
|
||||
bool dirty = false;
|
||||
|
||||
for (int r = 0, page = 0; r < Device->Height; r++) {
|
||||
// look for change and update shadow (cheap optimization = width always / by 2)
|
||||
for (int c = Device->Width / 2 / 2; --c >= 0;) {
|
||||
if (*optr != *iptr) {
|
||||
dirty = true;
|
||||
*optr = *iptr;
|
||||
}
|
||||
iptr++; optr++;
|
||||
}
|
||||
|
||||
// one line done, check for page boundary
|
||||
if (++page == Private->PageSize) {
|
||||
if (dirty) {
|
||||
uint16_t *optr = (uint16_t*) Private->iRAM, *iptr = (uint16_t*) (Private->Shadowbuffer + (r - page + 1) * Device->Width / 2);
|
||||
SetRowAddress( Device, r - page + 1, r );
|
||||
for (int i = page * Device->Width / 2 / 2; --i >= 0; iptr++) *optr++ = (*iptr >> 8) | (*iptr << 8);
|
||||
//memcpy(Private->iRAM, Private->Shadowbuffer + (r - page + 1) * Device->Width / 2, page * Device->Width / 2 );
|
||||
Device->WriteCommand( Device, 0x5c );
|
||||
Device->WriteData( Device, Private->iRAM, Device->Width * page / 2 );
|
||||
dirty = false;
|
||||
}
|
||||
page = 0;
|
||||
}
|
||||
}
|
||||
#else
|
||||
for (int r = 0; r < Device->Height; r += Private->PageSize) {
|
||||
SetRowAddress( Device, r, r + Private->PageSize - 1 );
|
||||
Device->WriteCommand( Device, L1_CMD_MEMORY_WRITE );
|
||||
if (Private->iRAM) {
|
||||
uint16_t *optr = (uint16_t*) Private->iRAM, *iptr = (uint16_t*) (Device->Framebuffer + r * Device->Width / 2);
|
||||
for (int i = Private->PageSize * Device->Width / 2 / 2; --i >= 0; iptr++) *optr++ = (*iptr >> 8) | (*iptr << 8);
|
||||
//memcpy(Private->iRAM, Device->Framebuffer + r * Device->Width / 2, Private->PageSize * Device->Width / 2 );
|
||||
Device->WriteData( Device, Private->iRAM, Private->PageSize * Device->Width / 2 );
|
||||
} else {
|
||||
Device->WriteData( Device, Device->Framebuffer + r * Device->Width / 2, Private->PageSize * Device->Width / 2 );
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
//Bit Name Description
|
||||
//--- --------------------------- ------------------------------------------------------
|
||||
//MY Row Address Order MCU to memory write/read direction.
|
||||
//MX Column Address Order MCU to memory write/read direction.
|
||||
//MV Row / Column Exchange MCU to memory write/read direction.
|
||||
//ML Vertical Refresh Order LCD vertical refresh direction control.
|
||||
//BGR RGB-BGR Order Color selector switch control
|
||||
// (0=RGB color filter panel, 1=BGR color filter panel)
|
||||
//MH Horizontal Refresh ORDER LCD horizontal refreshing direction control.
|
||||
// Bits 17-0
|
||||
// XX XX XX XX XX XX XX XX XX XX MY MX MV ML BGR MH 0 0
|
||||
typedef enum {
|
||||
MAC_BIT_MH=2,
|
||||
MAC_BIT_BGR,
|
||||
MAC_BIT_ML,
|
||||
MAC_BIT_MV,
|
||||
MAC_BIT_MX,
|
||||
MAC_BIT_MY,
|
||||
} mac_bits;
|
||||
|
||||
uint16_t set_mac_bit(mac_bits bit, uint16_t val){
|
||||
return (1 << bit) | val;
|
||||
}
|
||||
uint16_t unset_mac_bit(mac_bits bit, uint16_t val){
|
||||
return ~(1 << bit) & val;
|
||||
}
|
||||
|
||||
static void SetHFlip( struct GDS_Device* Device, bool On ) {
|
||||
struct PrivateSpace *Private = (struct PrivateSpace*) Device->Private;
|
||||
Private->ReMap = On ? (Private->ReMap & ~(1 << MAC_BIT_MX)) : (Private->ReMap | (1 << MAC_BIT_MX));
|
||||
Device->WriteCommand( Device, L1_CMD_MEMORY_ACCESS_CONTROL );
|
||||
Device->WriteData( Device, &Private->ReMap, 1 );
|
||||
WriteDataByte(Device,0x00);
|
||||
|
||||
}
|
||||
|
||||
static void SetVFlip( struct GDS_Device *Device, bool On ) {
|
||||
struct PrivateSpace *Private = (struct PrivateSpace*) Device->Private;
|
||||
Private->ReMap = On ? (Private->ReMap | (1 << MAC_BIT_MY)) : (Private->ReMap & ~(1 << MAC_BIT_MY));
|
||||
Device->WriteCommand( Device, 0xA0 );
|
||||
Device->WriteData( Device, &Private->ReMap, 1 );
|
||||
WriteDataByte(Device,0x00);
|
||||
|
||||
}
|
||||
|
||||
static void DisplayOn( struct GDS_Device* Device ) { Device->WriteCommand( Device, L1_CMD_DISPLAY_ON ); }
|
||||
static void DisplayOff( struct GDS_Device* Device ) { Device->WriteCommand( Device, L1_CMD_DISPLAY_OFF ); }
|
||||
|
||||
static void SetContrast( struct GDS_Device* Device, uint8_t Contrast ) {
|
||||
Device->WriteCommand( Device, L1_CMD_WRITE_DISPLAY_BRIGHTNESS );
|
||||
uint8_t loc_contrast = (uint8_t)((float)Contrast/5.0f* 255.0f);
|
||||
Device->WriteData( Device, &loc_contrast , 1 );
|
||||
WriteDataByte(Device,0x00);
|
||||
}
|
||||
|
||||
static bool Init( struct GDS_Device* Device ) {
|
||||
struct PrivateSpace *Private = (struct PrivateSpace*) Device->Private;
|
||||
|
||||
|
||||
// Private->Offset = (480 - Device->Width) / 4 / 2;
|
||||
|
||||
// find a page size that is not too small is an integer of height
|
||||
Private->PageSize = min(8, PAGE_BLOCK / (Device->Width / 2));
|
||||
Private->PageSize = Device->Height / (Device->Height / Private->PageSize) ;
|
||||
|
||||
#ifdef SHADOW_BUFFER
|
||||
// Private->Shadowbuffer = malloc( Device->FramebufferSize );
|
||||
// memset(Private->Shadowbuffer, 0xFF, Device->FramebufferSize);
|
||||
#endif
|
||||
Private->iRAM =NULL;
|
||||
//Private->iRAM =heap_caps_malloc(320*PARALLEL_LINES*sizeof(uint16_t), MALLOC_CAP_DMA);
|
||||
|
||||
|
||||
//ESP_LOGI(TAG, "ILI9341 with offset %u, page %u, iRAM %p", Private->Offset, Private->PageSize, Private->iRAM);
|
||||
ESP_LOGI(TAG, "ILI9341 ");
|
||||
|
||||
// need to be off and disable display RAM
|
||||
Device->DisplayOff( Device );
|
||||
int cmd=0;
|
||||
//Send all the commands
|
||||
while (ili_init_cmds[cmd].databytes!=0xff) {
|
||||
Device->WriteCommand( Device, ili_init_cmds[cmd].cmd );
|
||||
Device->WriteData(Device,ili_init_cmds[cmd].data,ili_init_cmds[cmd].databytes&0x1F);
|
||||
if (ili_init_cmds[cmd].databytes&0x80) {
|
||||
vTaskDelay(100 / portTICK_RATE_MS);
|
||||
}
|
||||
cmd++;
|
||||
}
|
||||
|
||||
// gone with the wind
|
||||
Device->DisplayOn( Device );
|
||||
Device->Update( Device );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static const struct GDS_Device ILI9341 = {
|
||||
.DisplayOn = DisplayOn, .DisplayOff = DisplayOff, .SetContrast = SetContrast,
|
||||
.SetVFlip = SetVFlip, .SetHFlip = SetHFlip,
|
||||
.Update = Update, .Init = Init,
|
||||
};
|
||||
|
||||
struct GDS_Device* ILI9341_Detect(char *Driver, struct GDS_Device* Device) {
|
||||
if (!strcasestr(Driver, "ILI9341")) return NULL;
|
||||
|
||||
if (!Device) Device = calloc(1, sizeof(struct GDS_Device));
|
||||
|
||||
*Device = ILI9341;
|
||||
Device->Depth = 4;
|
||||
|
||||
return Device;
|
||||
}
|
||||
|
||||
|
||||
@@ -51,13 +51,14 @@ static const char *known_drivers[] = {"SH1106",
|
||||
"SSD1326",
|
||||
"SSD1327",
|
||||
"SSD1675",
|
||||
"ILI9341",
|
||||
NULL
|
||||
};
|
||||
static void displayer_task(void *args);
|
||||
|
||||
struct GDS_Device *display;
|
||||
extern GDS_DetectFunc SSD1306_Detect, SSD132x_Detect, SH1106_Detect, SSD1675_Detect, SSD1322_Detect;
|
||||
GDS_DetectFunc *drivers[] = { SH1106_Detect, SSD1306_Detect, SSD132x_Detect, SSD1675_Detect, SSD1322_Detect, NULL };
|
||||
extern GDS_DetectFunc SSD1306_Detect, SSD132x_Detect, SH1106_Detect, SSD1675_Detect, SSD1322_Detect, ILI9341_Detect;
|
||||
GDS_DetectFunc *drivers[] = { SH1106_Detect, SSD1306_Detect, SSD132x_Detect, SSD1675_Detect, SSD1322_Detect,ILI9341_Detect, NULL };
|
||||
|
||||
/****************************************************************************************
|
||||
*
|
||||
|
||||
@@ -5,7 +5,11 @@ idf_component_register( SRCS cmd_squeezelite.c
|
||||
|
||||
|
||||
target_link_libraries(${COMPONENT_LIB} INTERFACE "-Wl,--undefined=feof")
|
||||
target_link_libraries(${COMPONENT_LIB} INTERFACE "-Wl,--undefined=log")
|
||||
target_link_libraries(${COMPONENT_LIB} INTERFACE "-Wl,--undefined=fdopen")
|
||||
target_link_libraries(${COMPONENT_LIB} INTERFACE "-Wl,--undefined=fileno")
|
||||
target_link_libraries(${COMPONENT_LIB} INTERFACE "-Wl,--undefined=fstat")
|
||||
target_link_libraries(${COMPONENT_LIB} INTERFACE "-Wl,--undefined=lround")
|
||||
target_link_libraries(${COMPONENT_LIB} INTERFACE "-Wl,--undefined=esp_app_desc")
|
||||
|
||||
idf_build_get_property(project_ver PROJECT_VER)
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
|
||||
static const char * TAG = "cmd_system";
|
||||
|
||||
static void register_setbtsource();
|
||||
static void register_free();
|
||||
static void register_heap();
|
||||
static void register_version();
|
||||
@@ -55,6 +56,7 @@ static void register_tasks();
|
||||
extern BaseType_t wifi_manager_task;
|
||||
void register_system()
|
||||
{
|
||||
register_setbtsource();
|
||||
register_free();
|
||||
register_heap();
|
||||
register_version();
|
||||
@@ -266,6 +268,89 @@ static int free_mem(int argc, char **argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct {
|
||||
struct arg_str *a2dp_dev_name;
|
||||
struct arg_str *a2dp_sink_name;
|
||||
struct arg_str *wakeup_gpio_level;
|
||||
struct arg_str *bt_sink_pin;
|
||||
struct arg_str *enable_bt_sink;
|
||||
struct arg_end *end;
|
||||
} set_btsource_args;
|
||||
|
||||
static int do_set_btsource(int argc, char **argv)
|
||||
{
|
||||
// a2dp_dev_name;
|
||||
// a2dp_sink_name;
|
||||
// wakeup_gpio_level;
|
||||
// bt_sink_pin;
|
||||
// enable_bt_sink;
|
||||
|
||||
|
||||
|
||||
// int nerrors = arg_parse_msg(argc, argv,(struct arg_hdr **)&deep_sleep_args);
|
||||
// if (nerrors != 0) {
|
||||
// return 1;
|
||||
// }
|
||||
// if (deep_sleep_args.wakeup_time->count) {
|
||||
// uint64_t timeout = 1000ULL * deep_sleep_args.wakeup_time->ival[0];
|
||||
// log_send_messaging(MESSAGING_INFO, "Enabling timer wakeup, timeout=%lluus", timeout);
|
||||
// ESP_ERROR_CHECK( esp_sleep_enable_timer_wakeup(timeout) );
|
||||
// }
|
||||
// if (deep_sleep_args.wakeup_gpio_num->count) {
|
||||
// int io_num = deep_sleep_args.wakeup_gpio_num->ival[0];
|
||||
// if (!rtc_gpio_is_valid_gpio(io_num)) {
|
||||
// log_send_messaging(MESSAGING_ERROR, "GPIO %d is not an RTC IO", io_num);
|
||||
// return 1;
|
||||
// }
|
||||
// int level = 0;
|
||||
// if (deep_sleep_args.wakeup_gpio_level->count) {
|
||||
// level = deep_sleep_args.wakeup_gpio_level->ival[0];
|
||||
// if (level != 0 && level != 1) {
|
||||
// log_send_messaging(MESSAGING_ERROR, "Invalid wakeup level: %d", level);
|
||||
// return 1;
|
||||
// }
|
||||
// }
|
||||
// log_send_messaging(MESSAGING_INFO, "Enabling wakeup on GPIO%d, wakeup on %s level",
|
||||
// io_num, level ? "HIGH" : "LOW");
|
||||
//
|
||||
// ESP_ERROR_CHECK( esp_sleep_enable_ext1_wakeup(1ULL << io_num, level) );
|
||||
// }
|
||||
// rtc_gpio_isolate(GPIO_NUM_12);
|
||||
// esp_deep_sleep_start();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void register_setbtsource(){
|
||||
|
||||
// a2dp_dev_name;
|
||||
// a2dp_sink_name;
|
||||
// wakeup_gpio_level;
|
||||
// bt_sink_pin;
|
||||
// enable_bt_sink;
|
||||
//
|
||||
// set_btsource_args.wakeup_time =
|
||||
// arg_int0("t", "time", "<t>", "Wake up time, ms");
|
||||
// set_btsource_args.wakeup_gpio_num =
|
||||
// arg_int0(NULL, "io", "<n>",
|
||||
// "If specified, wakeup using GPIO with given number");
|
||||
// set_btsource_args.wakeup_gpio_level =
|
||||
// arg_int0(NULL, "io_level", "<0|1>", "GPIO level to trigger wakeup");
|
||||
// set_btsource_args.end = arg_end(3);
|
||||
//
|
||||
// const esp_console_cmd_t cmd = {
|
||||
// .command = "deep_sleep",
|
||||
// .help = "Enter deep sleep mode. "
|
||||
// "Two wakeup modes are supported: timer and GPIO. "
|
||||
// "If no wakeup option is specified, will sleep indefinitely.",
|
||||
// .hint = NULL,
|
||||
// .func = &do_set_btsource,
|
||||
// .argtable = &set_btsource_args
|
||||
// };
|
||||
// ESP_ERROR_CHECK( esp_console_cmd_register(&cmd) );
|
||||
}
|
||||
|
||||
static void register_free()
|
||||
{
|
||||
const esp_console_cmd_t cmd = {
|
||||
|
||||
Binary file not shown.
@@ -13,7 +13,7 @@ my $prefs = preferences('plugin.squeezeesp32');
|
||||
my $log = Slim::Utils::Log->addLogCategory({
|
||||
'category' => 'plugin.squeezeesp32',
|
||||
'defaultLevel' => 'INFO',
|
||||
'description' => Slim::Utils::Strings::string('SqueezeESP32'),
|
||||
'description' => 'PLUGIN_SQUEEZEESP32',
|
||||
});
|
||||
|
||||
# migrate 'eq' pref, as that's a reserved word and could cause problems in the future
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
<defaultState>enabled</defaultState>
|
||||
<email>philippe_44@outlook.com</email>
|
||||
<targetApplication>
|
||||
<minVersion>7.5</minVersion>
|
||||
<minVersion>7.9</minVersion>
|
||||
<maxVersion>*</maxVersion>
|
||||
<id>SlimServer</id>
|
||||
</targetApplication>
|
||||
<name>PLUGIN_SQUEEZEESP32</name>
|
||||
<description>PLUGIN_SQUEEZEESP32_DESC</description>
|
||||
<module>Plugins::SqueezeESP32::Plugin</module>
|
||||
<version>0.92</version>
|
||||
<version>0.93</version>
|
||||
<creator>Philippe</creator>
|
||||
</extensions>
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<?xml version='1.0' standalone='yes'?>
|
||||
<extensions>
|
||||
<plugins>
|
||||
<plugin version="0.92" name="SqueezeESP32" minTarget="7.5" maxTarget="*">
|
||||
<plugin version="0.93" name="SqueezeESP32" minTarget="7.9" maxTarget="*">
|
||||
<link>https://github.com/sle118/squeezelite-esp32</link>
|
||||
<creator>Philippe</creator>
|
||||
<sha>274c9278af12e79edb8c3273f19f3fc7a9703795</sha>
|
||||
<sha>42e9a5713355c5c7b8b318f4254a183e9bb86b8f</sha>
|
||||
<email>philippe_44@outlook.com</email>
|
||||
<desc lang="EN">SqueezeESP32 additional player id (100)</desc>
|
||||
<url>http://github.com/sle118/squeezelite-esp32/raw/master/plugin/SqueezeESP32.zip</url>
|
||||
|
||||
@@ -436,11 +436,11 @@ CONFIG_HEAP_TRACING_OFF=y
|
||||
# CONFIG_HEAP_TRACING is not set
|
||||
# CONFIG_LOG_DEFAULT_LEVEL_NONE is not set
|
||||
# CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set
|
||||
# CONFIG_LOG_DEFAULT_LEVEL_WARN is not set
|
||||
CONFIG_LOG_DEFAULT_LEVEL_INFO=y
|
||||
CONFIG_LOG_DEFAULT_LEVEL_WARN=y
|
||||
# CONFIG_LOG_DEFAULT_LEVEL_INFO is not set
|
||||
# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set
|
||||
# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set
|
||||
CONFIG_LOG_DEFAULT_LEVEL=3
|
||||
CONFIG_LOG_DEFAULT_LEVEL=2
|
||||
CONFIG_LOG_COLORS=y
|
||||
CONFIG_LWIP_LOCAL_HOSTNAME="squeezelite-esp32"
|
||||
# CONFIG_LWIP_L2_TO_L3_COPY is not set
|
||||
|
||||
@@ -166,13 +166,7 @@ CONFIG_BT_A2DP_SOURCE_TASK_STACK_SIZE=2048
|
||||
|
||||
|
||||
CONFIG_BT_SSP_ENABLED=y
|
||||
CONFIG_BT_BLE_ENABLED=y
|
||||
CONFIG_BT_GATTS_ENABLE=y
|
||||
|
||||
CONFIG_BT_GATTS_SEND_SERVICE_CHANGE_AUTO=y
|
||||
CONFIG_BT_GATTS_SEND_SERVICE_CHANGE_MODE=0
|
||||
CONFIG_BT_GATTC_ENABLE=y
|
||||
|
||||
CONFIG_BT_BLE_ENABLED=n
|
||||
CONFIG_BT_BLE_SMP_ENABLE=y
|
||||
|
||||
|
||||
@@ -497,6 +491,8 @@ CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=40
|
||||
CONFIG_ESP32_WIFI_STATIC_TX_BUFFER=y
|
||||
CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=0
|
||||
CONFIG_ESP32_WIFI_STATIC_TX_BUFFER_NUM=12
|
||||
CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=n
|
||||
CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=n
|
||||
|
||||
|
||||
|
||||
@@ -613,7 +609,7 @@ CONFIG_LWIP_MAX_SOCKETS=16
|
||||
|
||||
CONFIG_LWIP_SO_REUSE=y
|
||||
CONFIG_LWIP_SO_REUSE_RXTOALL=y
|
||||
|
||||
CONFIG_LWIP_IP_REASSEMBLY=y
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user