diff --git a/debug_registers/README.md b/debug_registers/README.md index 6296a69..ee674c4 100644 --- a/debug_registers/README.md +++ b/debug_registers/README.md @@ -22,7 +22,7 @@ for (int i = 0; i < sizeof(registers); i++) { if (i != 0) { printf(","); } - printf("%d", registers[i]); + printf("0x%02x", registers[i]); } printf("\n"); ``` diff --git a/examples/receive_fsk/main/main.c b/examples/receive_fsk/main/main.c index 4afcffc..4c05904 100644 --- a/examples/receive_fsk/main/main.c +++ b/examples/receive_fsk/main/main.c @@ -72,9 +72,9 @@ void app_main() { .quadhd_io_num = -1, .max_transfer_sz = 0, }; - ESP_ERROR_CHECK(spi_bus_initialize(HSPI_HOST, &config, 1)); + ESP_ERROR_CHECK(spi_bus_initialize(SPI2_HOST, &config, 1)); spi_device_interface_config_t dev_cfg = { - .clock_speed_hz = 3E6, + .clock_speed_hz = 4E6, .spics_io_num = SS, .queue_size = 16, .command_bits = 0, @@ -82,7 +82,7 @@ void app_main() { .dummy_bits = 0, .mode = 0}; spi_device_handle_t spi_device; - ESP_ERROR_CHECK(spi_bus_add_device(HSPI_HOST, &dev_cfg, &spi_device)); + ESP_ERROR_CHECK(spi_bus_add_device(SPI2_HOST, &dev_cfg, &spi_device)); ESP_ERROR_CHECK(sx127x_create(spi_device, &device)); ESP_ERROR_CHECK(sx127x_set_opmod(SX127x_MODE_SLEEP, SX127x_MODULATION_FSK, device)); ESP_ERROR_CHECK(sx127x_set_frequency(437200012, device)); @@ -120,5 +120,5 @@ void app_main() { ESP_ERROR_CHECK(sx127x_set_opmod(SX127x_MODE_RX_CONT, SX127x_MODULATION_FSK, device)); while (1) { vTaskDelay(10000 / portTICK_PERIOD_MS); - } + } } diff --git a/examples/receive_fsk_beacon/main/main.c b/examples/receive_fsk_beacon/main/main.c index be154c2..b3e2cc2 100644 --- a/examples/receive_fsk_beacon/main/main.c +++ b/examples/receive_fsk_beacon/main/main.c @@ -72,9 +72,9 @@ void app_main() { .quadhd_io_num = -1, .max_transfer_sz = 0, }; - ESP_ERROR_CHECK(spi_bus_initialize(HSPI_HOST, &config, 1)); + ESP_ERROR_CHECK(spi_bus_initialize(SPI2_HOST, &config, 1)); spi_device_interface_config_t dev_cfg = { - .clock_speed_hz = 3E6, + .clock_speed_hz = 4E6, .spics_io_num = SS, .queue_size = 16, .command_bits = 0, @@ -82,7 +82,7 @@ void app_main() { .dummy_bits = 0, .mode = 0}; spi_device_handle_t spi_device; - ESP_ERROR_CHECK(spi_bus_add_device(HSPI_HOST, &dev_cfg, &spi_device)); + ESP_ERROR_CHECK(spi_bus_add_device(SPI2_HOST, &dev_cfg, &spi_device)); ESP_ERROR_CHECK(sx127x_create(spi_device, &device)); ESP_ERROR_CHECK(sx127x_set_opmod(SX127x_MODE_SLEEP, SX127x_MODULATION_FSK, device)); ESP_ERROR_CHECK(sx127x_set_frequency(437200012, device)); diff --git a/examples/receive_fsk_filtered/main/main.c b/examples/receive_fsk_filtered/main/main.c index 7ad071f..a3d1974 100644 --- a/examples/receive_fsk_filtered/main/main.c +++ b/examples/receive_fsk_filtered/main/main.c @@ -72,9 +72,9 @@ void app_main() { .quadhd_io_num = -1, .max_transfer_sz = 0, }; - ESP_ERROR_CHECK(spi_bus_initialize(HSPI_HOST, &config, 1)); + ESP_ERROR_CHECK(spi_bus_initialize(SPI2_HOST, &config, 1)); spi_device_interface_config_t dev_cfg = { - .clock_speed_hz = 3E6, + .clock_speed_hz = 4E6, .spics_io_num = SS, .queue_size = 16, .command_bits = 0, @@ -82,7 +82,7 @@ void app_main() { .dummy_bits = 0, .mode = 0}; spi_device_handle_t spi_device; - ESP_ERROR_CHECK(spi_bus_add_device(HSPI_HOST, &dev_cfg, &spi_device)); + ESP_ERROR_CHECK(spi_bus_add_device(SPI2_HOST, &dev_cfg, &spi_device)); ESP_ERROR_CHECK(sx127x_create(spi_device, &device)); ESP_ERROR_CHECK(sx127x_set_opmod(SX127x_MODE_SLEEP, SX127x_MODULATION_FSK, device)); ESP_ERROR_CHECK(sx127x_set_frequency(437200012, device)); diff --git a/examples/receive_fsk_fixed/main/main.c b/examples/receive_fsk_fixed/main/main.c index 57366fc..fd2402a 100644 --- a/examples/receive_fsk_fixed/main/main.c +++ b/examples/receive_fsk_fixed/main/main.c @@ -72,9 +72,9 @@ void app_main() { .quadhd_io_num = -1, .max_transfer_sz = 0, }; - ESP_ERROR_CHECK(spi_bus_initialize(HSPI_HOST, &config, 1)); + ESP_ERROR_CHECK(spi_bus_initialize(SPI2_HOST, &config, 1)); spi_device_interface_config_t dev_cfg = { - .clock_speed_hz = 3E6, + .clock_speed_hz = 4E6, .spics_io_num = SS, .queue_size = 16, .command_bits = 0, @@ -82,7 +82,7 @@ void app_main() { .dummy_bits = 0, .mode = 0}; spi_device_handle_t spi_device; - ESP_ERROR_CHECK(spi_bus_add_device(HSPI_HOST, &dev_cfg, &spi_device)); + ESP_ERROR_CHECK(spi_bus_add_device(SPI2_HOST, &dev_cfg, &spi_device)); ESP_ERROR_CHECK(sx127x_create(spi_device, &device)); ESP_ERROR_CHECK(sx127x_set_opmod(SX127x_MODE_SLEEP, SX127x_MODULATION_FSK, device)); ESP_ERROR_CHECK(sx127x_set_frequency(437200012, device)); diff --git a/examples/receive_fsk_raspberrypi/main.c b/examples/receive_fsk_raspberrypi/main.c index d52d2aa..c6d03d2 100644 --- a/examples/receive_fsk_raspberrypi/main.c +++ b/examples/receive_fsk_raspberrypi/main.c @@ -20,7 +20,7 @@ #define GPIO_DIO3_PIN 26 #define GPIO_DIO0_PIN 27 #define GPIO_RESET_PIN 6 -#define GPIO_POLL_TIMEOUT -1 +#define GPIO_POLL_TIMEOUT (-1) #define LINUX_ERROR_CHECK(x) \ do { \ @@ -177,7 +177,7 @@ int main() { LINUX_ERROR_CHECK(ioctl(spi_device_fd, SPI_IOC_WR_BITS_PER_WORD, &bits_per_word)); int lsb_setting = 0; // MSB LINUX_ERROR_CHECK(ioctl(spi_device_fd, SPI_IOC_WR_LSB_FIRST, &lsb_setting)); - int max_speed = 500000; + int max_speed = 4000000; LINUX_ERROR_CHECK(ioctl(spi_device_fd, SPI_IOC_WR_MAX_SPEED_HZ, &max_speed)); sx127x *device = NULL; diff --git a/examples/receive_lora/main/main.c b/examples/receive_lora/main/main.c index 5887cf9..c1c13fc 100644 --- a/examples/receive_lora/main/main.c +++ b/examples/receive_lora/main/main.c @@ -79,9 +79,9 @@ void app_main() { .quadhd_io_num = -1, .max_transfer_sz = 0, }; - ESP_ERROR_CHECK(spi_bus_initialize(HSPI_HOST, &config, 1)); + ESP_ERROR_CHECK(spi_bus_initialize(SPI2_HOST, &config, 1)); spi_device_interface_config_t dev_cfg = { - .clock_speed_hz = 3E6, + .clock_speed_hz = 8E6, .spics_io_num = SS, .queue_size = 16, .command_bits = 0, @@ -89,7 +89,7 @@ void app_main() { .dummy_bits = 0, .mode = 0}; spi_device_handle_t spi_device; - ESP_ERROR_CHECK(spi_bus_add_device(HSPI_HOST, &dev_cfg, &spi_device)); + ESP_ERROR_CHECK(spi_bus_add_device(SPI2_HOST, &dev_cfg, &spi_device)); ESP_ERROR_CHECK(sx127x_create(spi_device, &device)); ESP_ERROR_CHECK(sx127x_set_opmod(SX127x_MODE_SLEEP, SX127x_MODULATION_LORA, device)); ESP_ERROR_CHECK(sx127x_set_frequency(437200012, device)); diff --git a/examples/receive_lora_deepsleep/main/main.c b/examples/receive_lora_deepsleep/main/main.c index e72d57f..f6471f0 100644 --- a/examples/receive_lora_deepsleep/main/main.c +++ b/examples/receive_lora_deepsleep/main/main.c @@ -49,9 +49,9 @@ void app_main() { .quadhd_io_num = -1, .max_transfer_sz = 0, }; - ESP_ERROR_CHECK(spi_bus_initialize(HSPI_HOST, &config, 1)); + ESP_ERROR_CHECK(spi_bus_initialize(SPI2_HOST, &config, 1)); spi_device_interface_config_t dev_cfg = { - .clock_speed_hz = 3E6, + .clock_speed_hz = 8E6, .spics_io_num = SS, .queue_size = 16, .command_bits = 0, @@ -59,7 +59,7 @@ void app_main() { .dummy_bits = 0, .mode = 0}; spi_device_handle_t spi_device; - ESP_ERROR_CHECK(spi_bus_add_device(HSPI_HOST, &dev_cfg, &spi_device)); + ESP_ERROR_CHECK(spi_bus_add_device(SPI2_HOST, &dev_cfg, &spi_device)); ESP_ERROR_CHECK(sx127x_create(spi_device, &device)); esp_sleep_wakeup_cause_t cpu0WakeupReason = esp_sleep_get_wakeup_cause(); diff --git a/examples/receive_lora_implicit_header/main/main.c b/examples/receive_lora_implicit_header/main/main.c index 939578e..7a10f0e 100644 --- a/examples/receive_lora_implicit_header/main/main.c +++ b/examples/receive_lora_implicit_header/main/main.c @@ -68,9 +68,9 @@ void app_main() { .quadhd_io_num = -1, .max_transfer_sz = 0, }; - ESP_ERROR_CHECK(spi_bus_initialize(HSPI_HOST, &config, 1)); + ESP_ERROR_CHECK(spi_bus_initialize(SPI2_HOST, &config, 1)); spi_device_interface_config_t dev_cfg = { - .clock_speed_hz = 3E6, + .clock_speed_hz = 8E6, .spics_io_num = SS, .queue_size = 16, .command_bits = 0, @@ -78,7 +78,7 @@ void app_main() { .dummy_bits = 0, .mode = 0}; spi_device_handle_t spi_device; - ESP_ERROR_CHECK(spi_bus_add_device(HSPI_HOST, &dev_cfg, &spi_device)); + ESP_ERROR_CHECK(spi_bus_add_device(SPI2_HOST, &dev_cfg, &spi_device)); ESP_ERROR_CHECK(sx127x_create(spi_device, &device)); ESP_ERROR_CHECK(sx127x_set_opmod(SX127x_MODE_SLEEP, SX127x_MODULATION_LORA, device)); ESP_ERROR_CHECK(sx127x_set_frequency(437200012, device)); diff --git a/examples/receive_lora_raspberrypi/main.c b/examples/receive_lora_raspberrypi/main.c index b91c692..0dbde66 100644 --- a/examples/receive_lora_raspberrypi/main.c +++ b/examples/receive_lora_raspberrypi/main.c @@ -179,7 +179,7 @@ int main() { LINUX_ERROR_CHECK(ioctl(spi_device_fd, SPI_IOC_WR_BITS_PER_WORD, &bits_per_word)); int lsb_setting = 0; // MSB LINUX_ERROR_CHECK(ioctl(spi_device_fd, SPI_IOC_WR_LSB_FIRST, &lsb_setting)); - int max_speed = 500000; + int max_speed = 8000000; LINUX_ERROR_CHECK(ioctl(spi_device_fd, SPI_IOC_WR_MAX_SPEED_HZ, &max_speed)); sx127x *device = NULL; diff --git a/examples/receive_ook/main/main.c b/examples/receive_ook/main/main.c index 5559ae5..7eaaae7 100644 --- a/examples/receive_ook/main/main.c +++ b/examples/receive_ook/main/main.c @@ -72,9 +72,9 @@ void app_main() { .quadhd_io_num = -1, .max_transfer_sz = 0, }; - ESP_ERROR_CHECK(spi_bus_initialize(HSPI_HOST, &config, 1)); + ESP_ERROR_CHECK(spi_bus_initialize(SPI2_HOST, &config, 1)); spi_device_interface_config_t dev_cfg = { - .clock_speed_hz = 3E6, + .clock_speed_hz = 4E6, .spics_io_num = SS, .queue_size = 16, .command_bits = 0, @@ -82,7 +82,7 @@ void app_main() { .dummy_bits = 0, .mode = 0}; spi_device_handle_t spi_device; - ESP_ERROR_CHECK(spi_bus_add_device(HSPI_HOST, &dev_cfg, &spi_device)); + ESP_ERROR_CHECK(spi_bus_add_device(SPI2_HOST, &dev_cfg, &spi_device)); ESP_ERROR_CHECK(sx127x_create(spi_device, &device)); ESP_ERROR_CHECK(sx127x_set_opmod(SX127x_MODE_SLEEP, SX127x_MODULATION_OOK, device)); ESP_ERROR_CHECK(sx127x_set_frequency(437200012, device)); diff --git a/examples/transmit_fsk/main/main.c b/examples/transmit_fsk/main/main.c index 032834b..576a570 100644 --- a/examples/transmit_fsk/main/main.c +++ b/examples/transmit_fsk/main/main.c @@ -87,6 +87,7 @@ void setup_gpio_interrupts(gpio_num_t gpio, sx127x *device, gpio_int_type_t type void app_main() { ESP_LOGI(TAG, "starting up"); + spi_bus_config_t config = { .mosi_io_num = MOSI, .miso_io_num = MISO, @@ -95,9 +96,9 @@ void app_main() { .quadhd_io_num = -1, .max_transfer_sz = 0, }; - ESP_ERROR_CHECK(spi_bus_initialize(HSPI_HOST, &config, 1)); + ESP_ERROR_CHECK(spi_bus_initialize(SPI2_HOST, &config, 1)); spi_device_interface_config_t dev_cfg = { - .clock_speed_hz = 3E6, + .clock_speed_hz = 4E6, .spics_io_num = SS, .queue_size = 16, .command_bits = 0, @@ -105,7 +106,7 @@ void app_main() { .dummy_bits = 0, .mode = 0}; spi_device_handle_t spi_device; - ESP_ERROR_CHECK(spi_bus_add_device(HSPI_HOST, &dev_cfg, &spi_device)); + ESP_ERROR_CHECK(spi_bus_add_device(SPI2_HOST, &dev_cfg, &spi_device)); ESP_ERROR_CHECK(sx127x_create(spi_device, &device)); ESP_ERROR_CHECK(sx127x_set_opmod(SX127x_MODE_SLEEP, SX127x_MODULATION_FSK, device)); ESP_ERROR_CHECK(sx127x_set_frequency(437200012, device)); diff --git a/examples/transmit_fsk_beacon/main/main.c b/examples/transmit_fsk_beacon/main/main.c index 4a9f945..d22ee81 100644 --- a/examples/transmit_fsk_beacon/main/main.c +++ b/examples/transmit_fsk_beacon/main/main.c @@ -35,9 +35,9 @@ void app_main() { .quadhd_io_num = -1, .max_transfer_sz = 0, }; - ESP_ERROR_CHECK(spi_bus_initialize(HSPI_HOST, &config, 1)); + ESP_ERROR_CHECK(spi_bus_initialize(SPI2_HOST, &config, 1)); spi_device_interface_config_t dev_cfg = { - .clock_speed_hz = 3E6, + .clock_speed_hz = 4E6, .spics_io_num = SS, .queue_size = 16, .command_bits = 0, @@ -45,7 +45,7 @@ void app_main() { .dummy_bits = 0, .mode = 0}; spi_device_handle_t spi_device; - ESP_ERROR_CHECK(spi_bus_add_device(HSPI_HOST, &dev_cfg, &spi_device)); + ESP_ERROR_CHECK(spi_bus_add_device(SPI2_HOST, &dev_cfg, &spi_device)); ESP_ERROR_CHECK(sx127x_create(spi_device, &device)); ESP_ERROR_CHECK(sx127x_set_opmod(SX127x_MODE_SLEEP, SX127x_MODULATION_FSK, device)); ESP_ERROR_CHECK(sx127x_set_frequency(437200012, device)); @@ -61,7 +61,7 @@ void app_main() { ESP_ERROR_CHECK(sx127x_tx_set_pa_config(SX127x_PA_PIN_BOOST, 4, device)); ESP_ERROR_CHECK(sx127x_fsk_ook_set_crc(SX127X_CRC_CCITT, device)); - uint8_t payload = {0xCA, 0xFE, 0x01, 0x02, 0xBE, 0xEF}; + uint8_t payload[] = {0xCA, 0xFE, 0x01, 0x02, 0xBE, 0xEF}; ESP_ERROR_CHECK(sx127x_fsk_ook_set_packet_format(SX127X_FIXED, sizeof(payload), device)); ESP_ERROR_CHECK(sx127x_fsk_ook_tx_start_beacon(payload, sizeof(payload), 1000, device)); vTaskDelay(10000 / portTICK_PERIOD_MS); diff --git a/examples/transmit_fsk_fixed/main/main.c b/examples/transmit_fsk_fixed/main/main.c index 171b176..c22d7bc 100644 --- a/examples/transmit_fsk_fixed/main/main.c +++ b/examples/transmit_fsk_fixed/main/main.c @@ -76,9 +76,9 @@ void app_main() { .quadhd_io_num = -1, .max_transfer_sz = 0, }; - ESP_ERROR_CHECK(spi_bus_initialize(HSPI_HOST, &config, 1)); + ESP_ERROR_CHECK(spi_bus_initialize(SPI2_HOST, &config, 1)); spi_device_interface_config_t dev_cfg = { - .clock_speed_hz = 3E6, + .clock_speed_hz = 4E6, .spics_io_num = SS, .queue_size = 16, .command_bits = 0, @@ -86,7 +86,7 @@ void app_main() { .dummy_bits = 0, .mode = 0}; spi_device_handle_t spi_device; - ESP_ERROR_CHECK(spi_bus_add_device(HSPI_HOST, &dev_cfg, &spi_device)); + ESP_ERROR_CHECK(spi_bus_add_device(SPI2_HOST, &dev_cfg, &spi_device)); ESP_ERROR_CHECK(sx127x_create(spi_device, &device)); ESP_ERROR_CHECK(sx127x_set_opmod(SX127x_MODE_SLEEP, SX127x_MODULATION_FSK, device)); ESP_ERROR_CHECK(sx127x_set_frequency(437200012, device)); diff --git a/examples/transmit_lora/main/main.c b/examples/transmit_lora/main/main.c index 4245e1f..5f67332 100644 --- a/examples/transmit_lora/main/main.c +++ b/examples/transmit_lora/main/main.c @@ -12,6 +12,9 @@ #define SS 18 #define RST 23 #define DIO0 26 +// older versions of TTGO require manual wiring of pins below +//#define DIO1 33 +//#define DIO2 32 static const char *TAG = "sx127x"; @@ -71,9 +74,9 @@ void app_main() { .quadhd_io_num = -1, .max_transfer_sz = 0, }; - ESP_ERROR_CHECK(spi_bus_initialize(HSPI_HOST, &config, 1)); + ESP_ERROR_CHECK(spi_bus_initialize(SPI2_HOST, &config, 1)); spi_device_interface_config_t dev_cfg = { - .clock_speed_hz = 3E6, + .clock_speed_hz = 8E6, .spics_io_num = SS, .queue_size = 16, .command_bits = 0, @@ -81,7 +84,7 @@ void app_main() { .dummy_bits = 0, .mode = 0}; spi_device_handle_t spi_device; - ESP_ERROR_CHECK(spi_bus_add_device(HSPI_HOST, &dev_cfg, &spi_device)); + ESP_ERROR_CHECK(spi_bus_add_device(SPI2_HOST, &dev_cfg, &spi_device)); ESP_ERROR_CHECK(sx127x_create(spi_device, &device)); ESP_ERROR_CHECK(sx127x_set_opmod(SX127x_MODE_SLEEP, SX127x_MODULATION_LORA, device)); ESP_ERROR_CHECK(sx127x_set_frequency(437200012, device)); diff --git a/examples/transmit_lora_implicit_header/main/main.c b/examples/transmit_lora_implicit_header/main/main.c index f655e91..8271baa 100644 --- a/examples/transmit_lora_implicit_header/main/main.c +++ b/examples/transmit_lora_implicit_header/main/main.c @@ -44,9 +44,9 @@ void app_main() { .quadhd_io_num = -1, .max_transfer_sz = 0, }; - ESP_ERROR_CHECK(spi_bus_initialize(HSPI_HOST, &config, 1)); + ESP_ERROR_CHECK(spi_bus_initialize(SPI2_HOST, &config, 1)); spi_device_interface_config_t dev_cfg = { - .clock_speed_hz = 3E6, + .clock_speed_hz = 8E6, .spics_io_num = SS, .queue_size = 16, .command_bits = 0, @@ -54,7 +54,7 @@ void app_main() { .dummy_bits = 0, .mode = 0}; spi_device_handle_t spi_device; - ESP_ERROR_CHECK(spi_bus_add_device(HSPI_HOST, &dev_cfg, &spi_device)); + ESP_ERROR_CHECK(spi_bus_add_device(SPI2_HOST, &dev_cfg, &spi_device)); ESP_ERROR_CHECK(sx127x_create(spi_device, &device)); ESP_ERROR_CHECK(sx127x_set_opmod(SX127x_MODE_SLEEP, SX127x_MODULATION_LORA, device)); ESP_ERROR_CHECK(sx127x_set_frequency(437200012, device)); diff --git a/examples/transmit_lora_raspberrypi/main.c b/examples/transmit_lora_raspberrypi/main.c index 3766c60..6dc4bc7 100644 --- a/examples/transmit_lora_raspberrypi/main.c +++ b/examples/transmit_lora_raspberrypi/main.c @@ -110,7 +110,7 @@ int main() { LINUX_ERROR_CHECK(ioctl(spi_device_fd, SPI_IOC_WR_BITS_PER_WORD, &bits_per_word)); int lsb_setting = 0; // MSB LINUX_ERROR_CHECK(ioctl(spi_device_fd, SPI_IOC_WR_LSB_FIRST, &lsb_setting)); - int max_speed = 500000; + int max_speed = 8000000; LINUX_ERROR_CHECK(ioctl(spi_device_fd, SPI_IOC_WR_MAX_SPEED_HZ, &max_speed)); sx127x *device = NULL; diff --git a/examples/transmit_ook/main/main.c b/examples/transmit_ook/main/main.c index c31b59c..53f7a33 100644 --- a/examples/transmit_ook/main/main.c +++ b/examples/transmit_ook/main/main.c @@ -95,9 +95,9 @@ void app_main() { .quadhd_io_num = -1, .max_transfer_sz = 0, }; - ESP_ERROR_CHECK(spi_bus_initialize(HSPI_HOST, &config, 1)); + ESP_ERROR_CHECK(spi_bus_initialize(SPI2_HOST, &config, 1)); spi_device_interface_config_t dev_cfg = { - .clock_speed_hz = 3E6, + .clock_speed_hz = 4E6, .spics_io_num = SS, .queue_size = 16, .command_bits = 0, @@ -105,7 +105,7 @@ void app_main() { .dummy_bits = 0, .mode = 0}; spi_device_handle_t spi_device; - ESP_ERROR_CHECK(spi_bus_add_device(HSPI_HOST, &dev_cfg, &spi_device)); + ESP_ERROR_CHECK(spi_bus_add_device(SPI2_HOST, &dev_cfg, &spi_device)); ESP_ERROR_CHECK(sx127x_create(spi_device, &device)); ESP_ERROR_CHECK(sx127x_set_opmod(SX127x_MODE_SLEEP, SX127x_MODULATION_OOK, device)); ESP_ERROR_CHECK(sx127x_set_frequency(437200012, device));