From 79408a320fd15c3472639fdfbfa80c57ea2f20ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Moskal?= Date: Thu, 5 Aug 2021 11:17:48 -0700 Subject: [PATCH] add support for esp32 and esp32-s2 (#347) * Add esp32-devkitc * Docker fix * Disable device config for now on esp * Add esp32s2 * Add new esp32s2 compile service * add jacdac-iot board * import settings and wifi libs for esp32 * update shims * enable pins on esp32 * fix pin config * Remove feather-s2 config (incomplete anyways) * fix deps * add missing libs * bump pxt and pxt-c-p * Add cards for ESP32 boards * add missing libs * Optimised images with calibre/image-actions * re-generate files Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .vscode/launch.json | 22 + docs/boards/SUMMARY.md | 5 +- docs/boards/espressif-esp32-devkit-c.md | 11 + docs/boards/jacdac-iot-s2.md | 11 + docs/boards/misc.md | 14 + docs/projects/SUMMARY.md | 2 + .../adafruit-grand-central-m4-express.jpg | Bin 51357 -> 37832 bytes docs/static/libs/espressif-esp32-devkit-c.jpg | Bin 0 -> 46614 bytes docs/static/libs/jacdac-iot-s2.jpg | Bin 0 -> 47465 bytes libs/core---esp32/dal.d.ts | 595 ++++++++++++++++++ libs/core---esp32/enums.d.ts | 33 + libs/core---esp32/pxt.json | 3 + libs/core---esp32/shims.d.ts | 140 +++++ libs/core---esp32s2/dal.d.ts | 595 ++++++++++++++++++ libs/core---esp32s2/enums.d.ts | 33 + libs/core---esp32s2/pxt.json | 3 + libs/core---esp32s2/shims.d.ts | 140 +++++ libs/espressif-esp32-devkit-c/README.md | 4 + libs/espressif-esp32-devkit-c/board.json | 376 +++++++++++ libs/espressif-esp32-devkit-c/board.svg | 1 + libs/espressif-esp32-devkit-c/boardhd.svg | 1 + libs/espressif-esp32-devkit-c/config.ts | 41 ++ libs/espressif-esp32-devkit-c/device.d.ts | 77 +++ libs/espressif-esp32-devkit-c/pxt.json | 25 + libs/jacdac-iot-s2/README.md | 4 + libs/jacdac-iot-s2/board.json | 376 +++++++++++ libs/jacdac-iot-s2/board.svg | 1 + libs/jacdac-iot-s2/boardhd.svg | 1 + libs/jacdac-iot-s2/config.ts | 51 ++ libs/jacdac-iot-s2/device.d.ts | 13 + libs/jacdac-iot-s2/pxt.json | 23 + libs/settings---esp32/pxt.json | 3 + libs/wifi---esp32/enums.d.ts | 13 + libs/wifi---esp32/pxt.json | 3 + libs/wifi---esp32/shims.d.ts | 55 ++ package.json | 4 +- pxtarget.json | 43 +- 37 files changed, 2717 insertions(+), 5 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 docs/boards/espressif-esp32-devkit-c.md create mode 100644 docs/boards/jacdac-iot-s2.md create mode 100644 docs/static/libs/espressif-esp32-devkit-c.jpg create mode 100644 docs/static/libs/jacdac-iot-s2.jpg create mode 100644 libs/core---esp32/dal.d.ts create mode 100644 libs/core---esp32/enums.d.ts create mode 100644 libs/core---esp32/pxt.json create mode 100644 libs/core---esp32/shims.d.ts create mode 100644 libs/core---esp32s2/dal.d.ts create mode 100644 libs/core---esp32s2/enums.d.ts create mode 100644 libs/core---esp32s2/pxt.json create mode 100644 libs/core---esp32s2/shims.d.ts create mode 100644 libs/espressif-esp32-devkit-c/README.md create mode 100644 libs/espressif-esp32-devkit-c/board.json create mode 100644 libs/espressif-esp32-devkit-c/board.svg create mode 100644 libs/espressif-esp32-devkit-c/boardhd.svg create mode 100644 libs/espressif-esp32-devkit-c/config.ts create mode 100644 libs/espressif-esp32-devkit-c/device.d.ts create mode 100644 libs/espressif-esp32-devkit-c/pxt.json create mode 100644 libs/jacdac-iot-s2/README.md create mode 100644 libs/jacdac-iot-s2/board.json create mode 100644 libs/jacdac-iot-s2/board.svg create mode 100644 libs/jacdac-iot-s2/boardhd.svg create mode 100644 libs/jacdac-iot-s2/config.ts create mode 100644 libs/jacdac-iot-s2/device.d.ts create mode 100644 libs/jacdac-iot-s2/pxt.json create mode 100644 libs/settings---esp32/pxt.json create mode 100644 libs/wifi---esp32/enums.d.ts create mode 100644 libs/wifi---esp32/pxt.json create mode 100644 libs/wifi---esp32/shims.d.ts diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..5fa3c24f --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,22 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "pwa-node", + "request": "launch", + "name": "Compile in projects/esp", + "skipFiles": [ + "/**" + ], + "program": "${workspaceFolder}/node_modules/pxt-core/pxt-cli/cli.js", + "cwd": "${workspaceFolder}/projects/esp", + "outFiles": [ + "${workspaceFolder}/../pxt/built/*.js", + "${workspaceFolder}/node_modules/pxt-core/built/*.js" + ] + } + ] +} \ No newline at end of file diff --git a/docs/boards/SUMMARY.md b/docs/boards/SUMMARY.md index 1aa35e84..5cb839f4 100644 --- a/docs/boards/SUMMARY.md +++ b/docs/boards/SUMMARY.md @@ -22,9 +22,10 @@ * [XinaBox CS11](/boards/xinabox-cs11) * [Misc](/boards/misc) * [Robotics Masters Robo HAT MM1 M4](/boards/robotics-masters-robohatmm1-m4) + * [MSR Jacdac IoT Brain 48 (ESP32-S2)](/boards/jacdac-iot-s2) + * [Espressif ESP32 DevKit-C](/boards/espressif-esp32-devkit-c) * [RedBear BLE NANO 2](/boards/redbear-ble-nano) * [StichKit](/boards/stitchkit) * [Teknikio Bluebird](/boards/teknikio-bluebird) * [JD Brain NRF52840](/boards/brain-nrf52840) - -* [Add a new board](/boards/add-a-new-board) + * [Add a new board](/boards/add-a-new-board) diff --git a/docs/boards/espressif-esp32-devkit-c.md b/docs/boards/espressif-esp32-devkit-c.md new file mode 100644 index 00000000..ae24a2d5 --- /dev/null +++ b/docs/boards/espressif-esp32-devkit-c.md @@ -0,0 +1,11 @@ +# Espressif ESP32 DevKit-C + +```sim +forever(function() { + +}) +``` + +```package +espressif-esp32-devkit-c +``` diff --git a/docs/boards/jacdac-iot-s2.md b/docs/boards/jacdac-iot-s2.md new file mode 100644 index 00000000..b5d32a06 --- /dev/null +++ b/docs/boards/jacdac-iot-s2.md @@ -0,0 +1,11 @@ +# MSR Jacdac IoT Brain 48 (ESP32-S2) + +```sim +forever(function() { + +}) +``` + +```package +jacdac-iot-s2 +``` diff --git a/docs/boards/misc.md b/docs/boards/misc.md index 1439a78f..c41a517f 100644 --- a/docs/boards/misc.md +++ b/docs/boards/misc.md @@ -10,6 +10,20 @@ --- +* name: MSR Jacdac IoT Brain 48 (ESP32-S2) +* url: /boards/jacdac-iot-s2 +* cardType: template +* imageUrl: /static/libs/jacdac-iot-s2.jpg + +--- + +* name: Espressif ESP32 DevKit-C +* url: /boards/espressif-esp32-devkit-c +* cardType: template +* imageUrl: /static/libs/espressif-esp32-devkit-c.jpg + +--- + * name: RedBear BLE NANO 2 * url: /boards/redbear-ble-nano * cardType: template diff --git a/docs/projects/SUMMARY.md b/docs/projects/SUMMARY.md index 5127b1fb..6fa107b6 100644 --- a/docs/projects/SUMMARY.md +++ b/docs/projects/SUMMARY.md @@ -29,6 +29,8 @@ * [XinaBox CS11](/boards/xinabox-cs11) * [Misc](/boards/misc) * [Robotics Masters Robo HAT MM1 M4](/boards/robotics-masters-robohatmm1-m4) + * [MSR Jacdac IoT Brain 48 (ESP32-S2)](/boards/jacdac-iot-s2) + * [Espressif ESP32 DevKit-C](/boards/espressif-esp32-devkit-c) * [RedBear BLE NANO 2](/boards/redbear-ble-nano) * [StichKit](/boards/stitchkit) * [Bluebird](/boards/teknikio-bluebird) diff --git a/docs/static/libs/adafruit-grand-central-m4-express.jpg b/docs/static/libs/adafruit-grand-central-m4-express.jpg index a7b08f1b05e2392cbfc46412bfcdb14c1fdeea0c..ff2f3690b05357e63998570820a863fab5ebb403 100644 GIT binary patch literal 37832 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 literal 51357 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 diff --git a/docs/static/libs/espressif-esp32-devkit-c.jpg b/docs/static/libs/espressif-esp32-devkit-c.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0549ca9b359d68c372ee740e03b9675b0e2cca4e GIT binary patch literal 46614 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 F|Jeq??ymp< literal 0 HcmV?d00001 diff --git a/docs/static/libs/jacdac-iot-s2.jpg b/docs/static/libs/jacdac-iot-s2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1abdc2b61402745182d9db2eb25ea0c7db1dde1d GIT binary patch literal 47465 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 YWdz(h6LV^=XDC6_fu7Zsm6b>T+2CEcxc~qF literal 0 HcmV?d00001 diff --git a/libs/core---esp32/dal.d.ts b/libs/core---esp32/dal.d.ts new file mode 100644 index 00000000..292ab208 --- /dev/null +++ b/libs/core---esp32/dal.d.ts @@ -0,0 +1,595 @@ +// Auto-generated. Do not edit. +declare const enum DAL { + // /main/configkeys.h + CFG_PIN_NAME_MSK = 65535, + CFG_PIN_CONFIG_MSK = 4294901760, + CFG_PIN_CONFIG_ACTIVE_LO = 65536, + CFG_MAGIC0 = 513675505, + CFG_MAGIC1 = 539130489, + CFG_PIN_ACCELEROMETER_INT = 1, + CFG_PIN_ACCELEROMETER_SCL = 2, + CFG_PIN_ACCELEROMETER_SDA = 3, + CFG_PIN_BTN_A = 4, + CFG_PIN_BTN_B = 5, + CFG_PIN_BTN_SLIDE = 6, + CFG_PIN_DOTSTAR_CLOCK = 7, + CFG_PIN_DOTSTAR_DATA = 8, + CFG_PIN_FLASH_CS = 9, + CFG_PIN_FLASH_MISO = 10, + CFG_PIN_FLASH_MOSI = 11, + CFG_PIN_FLASH_SCK = 12, + CFG_PIN_LED = 13, + CFG_PIN_LIGHT = 14, + CFG_PIN_MICROPHONE = 15, + CFG_PIN_MIC_CLOCK = 16, + CFG_PIN_MIC_DATA = 17, + CFG_PIN_MISO = 18, + CFG_PIN_MOSI = 19, + CFG_PIN_NEOPIXEL = 20, + CFG_PIN_RX = 21, + CFG_PIN_RXLED = 22, + CFG_PIN_SCK = 23, + CFG_PIN_SCL = 24, + CFG_PIN_SDA = 25, + CFG_PIN_SPEAKER_AMP = 26, + CFG_PIN_TEMPERATURE = 27, + CFG_PIN_TX = 28, + CFG_PIN_TXLED = 29, + CFG_PIN_IR_OUT = 30, + CFG_PIN_IR_IN = 31, + CFG_PIN_DISPLAY_SCK = 32, + CFG_PIN_DISPLAY_MISO = 33, + CFG_PIN_DISPLAY_MOSI = 34, + CFG_PIN_DISPLAY_CS = 35, + CFG_PIN_DISPLAY_DC = 36, + CFG_DISPLAY_WIDTH = 37, + CFG_DISPLAY_HEIGHT = 38, + CFG_DISPLAY_CFG0 = 39, + CFG_DISPLAY_CFG1 = 40, + CFG_DISPLAY_CFG2 = 41, + CFG_DISPLAY_CFG3 = 42, + CFG_PIN_DISPLAY_RST = 43, + CFG_PIN_DISPLAY_BL = 44, + CFG_PIN_SERVO_1 = 45, + CFG_PIN_SERVO_2 = 46, + CFG_PIN_BTN_LEFT = 47, + CFG_PIN_BTN_RIGHT = 48, + CFG_PIN_BTN_UP = 49, + CFG_PIN_BTN_DOWN = 50, + CFG_PIN_BTN_MENU = 51, + CFG_PIN_LED_R = 52, + CFG_PIN_LED_G = 53, + CFG_PIN_LED_B = 54, + CFG_PIN_LED1 = 55, + CFG_PIN_LED2 = 56, + CFG_PIN_LED3 = 57, + CFG_PIN_LED4 = 58, + CFG_SPEAKER_VOLUME = 59, + CFG_PIN_JACK_TX = 60, + CFG_PIN_JACK_SENSE = 61, + CFG_PIN_JACK_HPEN = 62, + CFG_PIN_JACK_BZEN = 63, + CFG_PIN_JACK_PWREN = 64, + CFG_PIN_JACK_SND = 65, + CFG_PIN_JACK_BUSLED = 66, + CFG_PIN_JACK_COMMLED = 67, + CFG_PIN_BTN_SOFT_RESET = 69, + CFG_ACCELEROMETER_TYPE = 70, + CFG_PIN_BTNMX_LATCH = 71, + CFG_PIN_BTNMX_CLOCK = 72, + CFG_PIN_BTNMX_DATA = 73, + CFG_PIN_BTN_MENU2 = 74, + CFG_PIN_BATTSENSE = 75, + CFG_PIN_VIBRATION = 76, + CFG_PIN_PWREN = 77, + CFG_DISPLAY_TYPE = 78, + CFG_PIN_ROTARY_ENCODER_A = 79, + CFG_PIN_ROTARY_ENCODER_B = 80, + CFG_ACCELEROMETER_SPACE = 81, + CFG_PIN_WIFI_MOSI = 82, + CFG_PIN_WIFI_MISO = 83, + CFG_PIN_WIFI_SCK = 84, + CFG_PIN_WIFI_TX = 85, + CFG_PIN_WIFI_RX = 86, + CFG_PIN_WIFI_CS = 87, + CFG_PIN_WIFI_BUSY = 88, + CFG_PIN_WIFI_RESET = 89, + CFG_PIN_WIFI_GPIO0 = 90, + CFG_PIN_WIFI_AT_TX = 91, + CFG_PIN_WIFI_AT_RX = 92, + CFG_PIN_USB_POWER = 93, + ACCELEROMETER_TYPE_LIS3DH = 50, + ACCELEROMETER_TYPE_LIS3DH_ALT = 48, + ACCELEROMETER_TYPE_MMA8453 = 56, + ACCELEROMETER_TYPE_FXOS8700 = 60, + ACCELEROMETER_TYPE_MMA8653 = 58, + ACCELEROMETER_TYPE_MSA300 = 76, + ACCELEROMETER_TYPE_MPU6050 = 104, + DISPLAY_TYPE_ST7735 = 7735, + DISPLAY_TYPE_ILI9341 = 9341, + DISPLAY_TYPE_SMART = 4242, + CFG_PIN_A0 = 100, + CFG_PIN_A1 = 101, + CFG_PIN_A2 = 102, + CFG_PIN_A3 = 103, + CFG_PIN_A4 = 104, + CFG_PIN_A5 = 105, + CFG_PIN_A6 = 106, + CFG_PIN_A7 = 107, + CFG_PIN_A8 = 108, + CFG_PIN_A9 = 109, + CFG_PIN_A10 = 110, + CFG_PIN_A11 = 111, + CFG_PIN_A12 = 112, + CFG_PIN_A13 = 113, + CFG_PIN_A14 = 114, + CFG_PIN_A15 = 115, + CFG_PIN_A16 = 116, + CFG_PIN_A17 = 117, + CFG_PIN_A18 = 118, + CFG_PIN_A19 = 119, + CFG_PIN_A20 = 120, + CFG_PIN_A21 = 121, + CFG_PIN_A22 = 122, + CFG_PIN_A23 = 123, + CFG_PIN_A24 = 124, + CFG_PIN_A25 = 125, + CFG_PIN_A26 = 126, + CFG_PIN_A27 = 127, + CFG_PIN_A28 = 128, + CFG_PIN_A29 = 129, + CFG_PIN_A30 = 130, + CFG_PIN_A31 = 131, + CFG_PIN_D0 = 150, + CFG_PIN_D1 = 151, + CFG_PIN_D2 = 152, + CFG_PIN_D3 = 153, + CFG_PIN_D4 = 154, + CFG_PIN_D5 = 155, + CFG_PIN_D6 = 156, + CFG_PIN_D7 = 157, + CFG_PIN_D8 = 158, + CFG_PIN_D9 = 159, + CFG_PIN_D10 = 160, + CFG_PIN_D11 = 161, + CFG_PIN_D12 = 162, + CFG_PIN_D13 = 163, + CFG_PIN_D14 = 164, + CFG_PIN_D15 = 165, + CFG_PIN_D16 = 166, + CFG_PIN_D17 = 167, + CFG_PIN_D18 = 168, + CFG_PIN_D19 = 169, + CFG_PIN_D20 = 170, + CFG_PIN_D21 = 171, + CFG_PIN_D22 = 172, + CFG_PIN_D23 = 173, + CFG_PIN_D24 = 174, + CFG_PIN_D25 = 175, + CFG_PIN_D26 = 176, + CFG_PIN_D27 = 177, + CFG_PIN_D28 = 178, + CFG_PIN_D29 = 179, + CFG_PIN_D30 = 180, + CFG_PIN_D31 = 181, + CFG_NUM_NEOPIXELS = 200, + CFG_NUM_DOTSTARS = 201, + CFG_DEFAULT_BUTTON_MODE = 202, + CFG_SWD_ENABLED = 203, + CFG_FLASH_BYTES = 204, + CFG_RAM_BYTES = 205, + CFG_SYSTEM_HEAP_BYTES = 206, + CFG_LOW_MEM_SIMULATION_KB = 207, + CFG_BOOTLOADER_BOARD_ID = 208, + CFG_UF2_FAMILY = 209, + CFG_PINS_PORT_SIZE = 210, + CFG_BOOTLOADER_PROTECTION = 211, + CFG_POWER_DEEPSLEEP_TIMEOUT = 212, + CFG_ANALOG_BUTTON_THRESHOLD = 213, + CFG_CPU_MHZ = 214, + CFG_CONTROLLER_LIGHT_MAX_BRIGHTNESS = 215, + CFG_ANALOG_JOYSTICK_MIN = 216, + CFG_ANALOG_JOYSTICK_MAX = 217, + CFG_TIMERS_TO_USE = 218, + CFG_PIN_ONBOARD_DOTSTAR_CLOCK = 219, + CFG_PIN_ONBOARD_DOTSTAR_DATA = 220, + CFG_NUM_ONBOARD_DOTSTARS = 221, + CFG_PIN_ONBOARD_NEOPIXEL = 222, + CFG_NUM_ONBOARD_NEOPIXELS = 223, + CFG_MATRIX_KEYPAD_MESSAGE_ID = 239, + CFG_NUM_MATRIX_KEYPAD_ROWS = 240, + CFG_PIN_MATRIX_KEYPAD_ROW0 = 241, + CFG_PIN_MATRIX_KEYPAD_ROW1 = 242, + CFG_PIN_MATRIX_KEYPAD_ROW2 = 243, + CFG_PIN_MATRIX_KEYPAD_ROW3 = 244, + CFG_PIN_MATRIX_KEYPAD_ROW4 = 245, + CFG_PIN_MATRIX_KEYPAD_ROW5 = 246, + CFG_PIN_MATRIX_KEYPAD_ROW6 = 247, + CFG_PIN_MATRIX_KEYPAD_ROW7 = 248, + CFG_NUM_MATRIX_KEYPAD_COLS = 250, + CFG_PIN_MATRIX_KEYPAD_COL0 = 251, + CFG_PIN_MATRIX_KEYPAD_COL1 = 252, + CFG_PIN_MATRIX_KEYPAD_COL2 = 253, + CFG_PIN_MATRIX_KEYPAD_COL3 = 254, + CFG_PIN_MATRIX_KEYPAD_COL4 = 255, + CFG_PIN_MATRIX_KEYPAD_COL5 = 256, + CFG_PIN_MATRIX_KEYPAD_COL6 = 257, + CFG_PIN_MATRIX_KEYPAD_COL7 = 258, + CFG_PIN_B0 = 300, + CFG_PIN_B1 = 301, + CFG_PIN_B2 = 302, + CFG_PIN_B3 = 303, + CFG_PIN_B4 = 304, + CFG_PIN_B5 = 305, + CFG_PIN_B6 = 306, + CFG_PIN_B7 = 307, + CFG_PIN_B8 = 308, + CFG_PIN_B9 = 309, + CFG_PIN_B10 = 310, + CFG_PIN_B11 = 311, + CFG_PIN_B12 = 312, + CFG_PIN_B13 = 313, + CFG_PIN_B14 = 314, + CFG_PIN_B15 = 315, + CFG_PIN_B16 = 316, + CFG_PIN_B17 = 317, + CFG_PIN_B18 = 318, + CFG_PIN_B19 = 319, + CFG_PIN_B20 = 320, + CFG_PIN_B21 = 321, + CFG_PIN_B22 = 322, + CFG_PIN_B23 = 323, + CFG_PIN_B24 = 324, + CFG_PIN_B25 = 325, + CFG_PIN_B26 = 326, + CFG_PIN_B27 = 327, + CFG_PIN_B28 = 328, + CFG_PIN_B29 = 329, + CFG_PIN_B30 = 330, + CFG_PIN_B31 = 331, + CFG_PIN_C0 = 350, + CFG_PIN_C1 = 351, + CFG_PIN_C2 = 352, + CFG_PIN_C3 = 353, + CFG_PIN_C4 = 354, + CFG_PIN_C5 = 355, + CFG_PIN_C6 = 356, + CFG_PIN_C7 = 357, + CFG_PIN_C8 = 358, + CFG_PIN_C9 = 359, + CFG_PIN_C10 = 360, + CFG_PIN_C11 = 361, + CFG_PIN_C12 = 362, + CFG_PIN_C13 = 363, + CFG_PIN_C14 = 364, + CFG_PIN_C15 = 365, + CFG_PIN_C16 = 366, + CFG_PIN_C17 = 367, + CFG_PIN_C18 = 368, + CFG_PIN_C19 = 369, + CFG_PIN_C20 = 370, + CFG_PIN_C21 = 371, + CFG_PIN_C22 = 372, + CFG_PIN_C23 = 373, + CFG_PIN_C24 = 374, + CFG_PIN_C25 = 375, + CFG_PIN_C26 = 376, + CFG_PIN_C27 = 377, + CFG_PIN_C28 = 378, + CFG_PIN_C29 = 379, + CFG_PIN_C30 = 380, + CFG_PIN_C31 = 381, + CFG_PIN_P0 = 400, + CFG_PIN_P1 = 401, + CFG_PIN_P2 = 402, + CFG_PIN_P3 = 403, + CFG_PIN_P4 = 404, + CFG_PIN_P5 = 405, + CFG_PIN_P6 = 406, + CFG_PIN_P7 = 407, + CFG_PIN_P8 = 408, + CFG_PIN_P9 = 409, + CFG_PIN_P10 = 410, + CFG_PIN_P11 = 411, + CFG_PIN_P12 = 412, + CFG_PIN_P13 = 413, + CFG_PIN_P14 = 414, + CFG_PIN_P15 = 415, + CFG_PIN_P16 = 416, + CFG_PIN_P17 = 417, + CFG_PIN_P18 = 418, + CFG_PIN_P19 = 419, + CFG_PIN_P20 = 420, + CFG_PIN_P21 = 421, + CFG_PIN_P22 = 422, + CFG_PIN_P23 = 423, + CFG_PIN_P24 = 424, + CFG_PIN_P25 = 425, + CFG_PIN_P26 = 426, + CFG_PIN_P27 = 427, + CFG_PIN_P28 = 428, + CFG_PIN_P29 = 429, + CFG_PIN_P30 = 430, + CFG_PIN_P31 = 431, + CFG_PIN_P32 = 432, + CFG_PIN_P33 = 433, + CFG_PIN_P34 = 434, + CFG_PIN_P35 = 435, + CFG_PIN_P36 = 436, + CFG_PIN_P37 = 437, + CFG_PIN_P38 = 438, + CFG_PIN_P39 = 439, + CFG_PIN_P40 = 440, + CFG_PIN_P41 = 441, + CFG_PIN_P42 = 442, + CFG_PIN_P43 = 443, + CFG_PIN_P44 = 444, + CFG_PIN_P45 = 445, + CFG_PIN_P46 = 446, + CFG_PIN_P47 = 447, + CFG_PIN_P48 = 448, + CFG_PIN_P49 = 449, + CFG_PIN_P50 = 450, + CFG_PIN_P51 = 451, + CFG_PIN_P52 = 452, + CFG_PIN_P53 = 453, + CFG_PIN_P54 = 454, + CFG_PIN_P55 = 455, + CFG_PIN_P56 = 456, + CFG_PIN_P57 = 457, + CFG_PIN_P58 = 458, + CFG_PIN_P59 = 459, + CFG_PIN_P60 = 460, + CFG_PIN_P61 = 461, + CFG_PIN_P62 = 462, + CFG_PIN_P63 = 463, + CFG_PIN_LORA_MISO = 1001, + CFG_PIN_LORA_MOSI = 1002, + CFG_PIN_LORA_SCK = 1003, + CFG_PIN_LORA_CS = 1004, + CFG_PIN_LORA_BOOT = 1005, + CFG_PIN_LORA_RESET = 1006, + CFG_PIN_IRRXLED = 1007, + CFG_PIN_IRTXLED = 1008, + CFG_PIN_LCD_RESET = 1009, + CFG_PIN_LCD_ENABLE = 1010, + CFG_PIN_LCD_DATALINE4 = 1011, + CFG_PIN_LCD_DATALINE5 = 1012, + CFG_PIN_LCD_DATALINE6 = 1013, + CFG_PIN_LCD_DATALINE7 = 1014, + CFG_NUM_LCD_COLUMNS = 1015, + CFG_NUM_LCD_ROWS = 1016, + CFG_PIN_RCC0 = 1017, + CFG_PIN_RCC1 = 1018, + CFG_PIN_RCC2 = 1019, + CFG_PIN_RCC3 = 1020, + CFG_PIN_RCC4 = 1021, + CFG_PIN_RCC5 = 1022, + CFG_PIN_RCC6 = 1023, + CFG_PIN_RCC7 = 1024, + CFG_PIN_SERVO0 = 1025, + CFG_PIN_SERVO1 = 1026, + CFG_PIN_SERVO2 = 1027, + CFG_PIN_SERVO3 = 1028, + CFG_PIN_SERVO4 = 1029, + CFG_PIN_SERVO5 = 1030, + CFG_PIN_SERVO6 = 1031, + CFG_PIN_SERVO7 = 1032, + CFG_PIN_SERVO8 = 1033, + CFG_PIN_PI_TX = 1034, + CFG_PIN_PI_RX = 1035, + CFG_PIN_GPS_SDA = 1036, + CFG_PIN_GPS_SCL = 1037, + CFG_PIN_GPS_TX = 1038, + CFG_PIN_GPS_RX = 1039, + CFG_PIN_GROVE0 = 1040, + CFG_PIN_GROVE1 = 1041, + CFG_PIN_SS = 1042, + CFG_PIN_D33 = 183, + CFG_PIN_D34 = 184, + CFG_PIN_D35 = 185, + CFG_PIN_D36 = 186, + CFG_PIN_D37 = 187, + CFG_PIN_D38 = 188, + CFG_PIN_D39 = 189, + CFG_PIN_D40 = 190, + CFG_PIN_D41 = 191, + CFG_PIN_D42 = 192, + CFG_PIN_D43 = 193, + CFG_PIN_D44 = 194, + CFG_PIN_D45 = 195, + CFG_PIN_D46 = 196, + CFG_PIN_D47 = 197, + CFG_PIN_D48 = 198, + CFG_PIN_D49 = 199, + CFG_PIN_D50 = 259, + CFG_PIN_D51 = 260, + CFG_PIN_D52 = 261, + CFG_PIN_D53 = 262, + CFG_PIN_TX1 = 263, + CFG_PIN_TX2 = 264, + CFG_PIN_TX3 = 265, + CFG_PIN_RX1 = 266, + CFG_PIN_RX2 = 267, + CFG_PIN_RX3 = 268, + CFG_PIN_SCL1 = 269, + CFG_PIN_SDA1 = 270, + CFG_PIN_PCC_D0 = 271, + CFG_PIN_PCC_D1 = 272, + CFG_PIN_PCC_D2 = 273, + CFG_PIN_PCC_D3 = 274, + CFG_PIN_PCC_D4 = 275, + CFG_PIN_PCC_D5 = 276, + CFG_PIN_PCC_D6 = 277, + CFG_PIN_PCC_D7 = 278, + CFG_PIN_PCC_D8 = 279, + CFG_PIN_PCC_D9 = 280, + CFG_PIN_PCC_D10 = 281, + CFG_PIN_PCC_D11 = 282, + CFG_PIN_PCC_D12 = 283, + CFG_PIN_PCC_D13 = 284, + CFG_PIN_CC_DEN1 = 285, + CFG_PIN_CC_DEN2 = 286, + CFG_PIN_CC_CLK = 287, + CFG_PIN_XCC_CLK = 288, + CFG_PIN_JDPWR_PRE_SENSE = 1100, + CFG_PIN_JDPWR_GND_SENSE = 1101, + CFG_PIN_JDPWR_PULSE = 1102, + CFG_PIN_JDPWR_OVERLOAD_LED = 1103, + CFG_PIN_JDPWR_ENABLE = 1104, + CFG_PIN_JDPWR_FAULT = 1105, + // /main/jacdac/JacdacBLE.h + JACDAC_BLE_BUFFER_SIZE = 254, + MICROBIT_JACDAC_S_EVT_RX = 1, + MICROBIT_JACDAC_S_EVT_TX = 1, + DEVICE_ID_JACDAC_BLE = 3056, + JD_BLE_STATUS_IN_USE = 8, + // /main/jacdac/jdprotocol.h + JD_SERIAL_PAYLOAD_SIZE = 236, + JD_SERIAL_FULL_HEADER_SIZE = 16, + JD_SERVICE_CLASS_CTRL = 0, + JD_SERVICE_NUMBER_CTRL = 0, + JD_SERVICE_NUMBER_MASK = 63, + JD_SERVICE_NUMBER_CRC_ACK = 63, + JD_FRAME_FLAG_COMMAND = 1, + JD_FRAME_FLAG_ACK_REQUESTED = 2, + JD_FRAME_FLAG_IDENTIFIER_IS_SERVICE_CLASS = 4, + JD_REG_INTENSITY = 1, + JD_REG_VALUE = 2, + JD_REG_IS_STREAMING = 3, + JD_REG_STREAMING_INTERVAL = 4, + JD_REG_LOW_THRESHOLD = 5, + JD_REG_HIGH_THRESHOLD = 6, + JD_REG_MAX_POWER = 7, + JD_REG_READING = 257, + JD_CMD_GET_REG = 4096, + JD_CMD_SET_REG = 8192, + JD_CMD_ADVERTISEMENT_DATA = 0, + JD_CMD_EVENT = 1, + JD_CMD_CALIBRATE = 2, + JD_CMD_GET_DESCRIPTION = 3, + JD_CMD_CTRL_NOOP = 128, + JD_CMD_CTRL_IDENTIFY = 129, + JD_CMD_CTRL_RESET = 130, + JD_REG_CTRL_DEVICE_DESCRIPTION = 384, + JD_REG_CTRL_DEVICE_CLASS = 385, + JD_REG_CTRL_TEMPERATURE = 386, + JD_REG_CTRL_LIGHT_LEVEL = 387, + JD_REG_CTRL_BL_DEVICE_CLASS = 388, + JDSPI_MAGIC = 31437, + JDSPI_MAGIC_NOOP = 46029, + // /main/pintarget.h + DEVICE_PIN_EVT_RISE = 2, + DEVICE_PIN_EVT_FALL = 3, + DEVICE_PIN_EVT_PULSE_HI = 4, + DEVICE_PIN_EVT_PULSE_LO = 5, + DEVICE_PIN_EVENT_NONE = 0, + DEVICE_PIN_EVENT_ON_EDGE = 1, + DEVICE_PIN_EVENT_ON_PULSE = 2, + DEVICE_PIN_EVENT_ON_TOUCH = 3, + // /main/platform.h + PXT_ESP32 = 1, + PAGE_SIZE = 1024, + DEV_NUM_PINS = 50, + IMAGE_BITS = 4, + // /main/pxt.h + OUTPUT_BITS = 12, + DEVICE_EVT_ANY = 0, + DEVICE_ID_NOTIFY_ONE = 1022, + DEVICE_ID_NOTIFY = 1023, + DEVICE_ID_JACDAC = 30, + DEVICE_ID_JACDAC_PHYS = 31, + // /main/pxtbase.h + PXT32 = 1, + PXT64 = 1, + PXT_REFCNT_FLASH = 65534, + VTABLE_MAGIC = 249, + VTABLE_MAGIC2 = 248, + Undefined = 0, + Boolean = 1, + Number = 2, + String = 3, + Object = 4, + BoxedString = 1, + BoxedNumber = 2, + BoxedBuffer = 3, + RefAction = 4, + RefImage = 5, + RefCollection = 6, + RefRefLocal = 7, + RefMap = 8, + RefMImage = 9, + MMap = 10, + BoxedString_SkipList = 11, + BoxedString_ASCII = 12, + ZPin = 13, + User0 = 16, + IMAGE_HEADER_MAGIC = 135, + Int8LE = 1, + UInt8LE = 2, + Int16LE = 3, + UInt16LE = 4, + Int32LE = 5, + Int8BE = 6, + UInt8BE = 7, + Int16BE = 8, + UInt16BE = 9, + Int32BE = 10, + UInt32LE = 11, + UInt32BE = 12, + Float32LE = 13, + Float64LE = 14, + Float32BE = 15, + Float64BE = 16, + NUM_TRY_FRAME_REGS = 3, + GC = 0, + PXT_STRING_SKIP_INCR = 16, + // /main/pxtconfig.h + PXT_VM = 1, + PXT_UF2_FAMILY = 3218951918, + // /main/pxtcore.h + PXT_HARD_FLOAT = 1, + // /main/uf2hid.h + UF2_HID_H = 1, + HF2_CMD_BININFO = 1, + HF2_MODE_BOOTLOADER = 1, + HF2_MODE_USERSPACE = 2, + HF2_CMD_INFO = 2, + HF2_CMD_RESET_INTO_APP = 3, + HF2_CMD_RESET_INTO_BOOTLOADER = 4, + HF2_CMD_START_FLASH = 5, + HF2_CMD_WRITE_FLASH_PAGE = 6, + HF2_CMD_CHKSUM_PAGES = 7, + HF2_CMD_READ_WORDS = 8, + HF2_CMD_WRITE_WORDS = 9, + HF2_CMD_DMESG = 16, + HF2_EV_MASK = 8388608, + HF2_CMD_JDS_CONFIG = 32, + HF2_CMD_JDS_SEND = 33, + HF2_EV_JDS_PACKET = 8388640, + HF2_FLAG_SERIAL_OUT = 128, + HF2_FLAG_SERIAL_ERR = 192, + HF2_FLAG_CMDPKT_LAST = 64, + HF2_FLAG_CMDPKT_BODY = 0, + HF2_FLAG_MASK = 192, + HF2_SIZE_MASK = 63, + HF2_STATUS_OK = 0, + HF2_STATUS_INVALID_CMD = 1, + HF2_STATUS_INVALID_STATE = 2, + // /main/vm.h + VM_OPCODE_BASE_SIZE = 6, + VM_OPCODE_ARG_POS = 7, + VM_RTCALL_PUSH_MASK = 8192, + VM_MAX_FUNCTION_STACK = 200, + VM_STACK_SIZE = 1000, + Invalid = 0, + InfoHeader = 1, + OpCodeMap = 2, + NumberLiterals = 3, + ConfigData = 4, + IfaceMemberNames = 5, + NumberBoxes = 6, + Literal = 33, + VTable = 34, + PXT_WAIT_SOURCE_PROMISE = 131056, +} diff --git a/libs/core---esp32/enums.d.ts b/libs/core---esp32/enums.d.ts new file mode 100644 index 00000000..e28759fa --- /dev/null +++ b/libs/core---esp32/enums.d.ts @@ -0,0 +1,33 @@ +// Auto-generated. Do not edit. + + + declare const enum PulseValue { + //% block=high + High = 4, // DEVICE_PIN_EVT_PULSE_HI + //% block=low + Low = 5, // DEVICE_PIN_EVT_PULSE_LO + } + + + declare const enum PinEvent { + //% block="pulse high" + PulseHigh = 4, // DEVICE_PIN_EVT_PULSE_HI + //% block="pulse low" + PulseLow = 5, // DEVICE_PIN_EVT_PULSE_LO + //% block="rise" + Rise = 2, // DEVICE_PIN_EVT_RISE + //% block="fall" + Fall = 3, // DEVICE_PIN_EVT_FALL + } + + + declare const enum PinPullMode { + //% block="down" + PullDown = 0, + //% block="up" + PullUp = 1, + //% block="none" + PullNone = 2, + } + +// Auto-generated. Do not edit. Really. diff --git a/libs/core---esp32/pxt.json b/libs/core---esp32/pxt.json new file mode 100644 index 00000000..a435a9b4 --- /dev/null +++ b/libs/core---esp32/pxt.json @@ -0,0 +1,3 @@ +{ + "additionalFilePath": "../../node_modules/pxt-common-packages/libs/core---esp32" +} diff --git a/libs/core---esp32/shims.d.ts b/libs/core---esp32/shims.d.ts new file mode 100644 index 00000000..82d6af82 --- /dev/null +++ b/libs/core---esp32/shims.d.ts @@ -0,0 +1,140 @@ +// Auto-generated. Do not edit. +declare namespace pins { + + /** + * Get a pin by configuration id (DAL.CFG_PIN...) + */ + //% shim=pins::pinByCfg + function pinByCfg(key: int32): DigitalInOutPin; + + /** + * Create a new zero-initialized buffer. + * @param size number of bytes in the buffer + */ + //% shim=pins::createBuffer + function createBuffer(size: int32): Buffer; +} + + +declare interface DigitalInOutPin { + /** + * Read a pin or connector as either 0 or 1 + * @param name pin to read from + */ + //% help=pins/digital-read weight=61 + //% blockId=device_get_digital_pin block="digital read|pin %name" blockGap=8 + //% blockNamespace=pins + //% name.fieldEditor="gridpicker" + //% name.fieldOptions.width=220 + //% name.fieldOptions.columns=4 shim=DigitalInOutPinMethods::digitalRead + digitalRead(): boolean; + + /** + * Set a pin or connector value to either 0 or 1. + * @param name pin to write to + * @param value value to set on the pin + */ + //% help=pins/digital-write weight=60 + //% blockId=device_set_digital_pin block="digital write|pin %name|to %value=toggleHighLow" + //% blockNamespace=pins + //% name.fieldEditor="gridpicker" + //% name.fieldOptions.width=220 + //% name.fieldOptions.columns=4 shim=DigitalInOutPinMethods::digitalWrite + digitalWrite(value: boolean): void; + + /** + * Make this pin a digital input, and create events where the timestamp is the duration + * that this pin was either ``high`` or ``low``. + */ + //% help=pins/on-pulsed weight=16 blockGap=8 + //% blockId=pins_on_pulsed block="on|pin %pin|pulsed %pulse" + //% blockNamespace=pins + //% pin.fieldEditor="gridpicker" + //% pin.fieldOptions.width=220 + //% pin.fieldOptions.columns=4 + //% deprecated=1 hidden=1 shim=DigitalInOutPinMethods::onPulsed + onPulsed(pulse: PulseValue, body: () => void): void; + + /** + * Register code to run when a pin event occurs. + */ + //% help=pins/on-event weight=20 blockGap=8 + //% blockId=pinsonevent block="on|pin %pin|%event" + //% blockNamespace=pins + //% pin.fieldEditor="gridpicker" + //% pin.fieldOptions.width=220 + //% pin.fieldOptions.columns=4 shim=DigitalInOutPinMethods::onEvent + onEvent(event: PinEvent, body: () => void): void; + + /** + * Return the duration of a pulse in microseconds + * @param name the pin which measures the pulse + * @param value the value of the pulse (default high) + * @param maximum duration in micro-seconds + */ + //% blockId="pins_pulse_in" block="pulse in (µs)|pin %name|pulsed %high||timeout %maxDuration (µs)" + //% weight=18 blockGap=8 + //% help="pins/pulse-in" + //% blockNamespace=pins + //% pin.fieldEditor="gridpicker" + //% pin.fieldOptions.width=220 + //% pin.fieldOptions.columns=4 maxDuration.defl=2000000 shim=DigitalInOutPinMethods::pulseIn + pulseIn(value: PulseValue, maxDuration?: int32): int32; + + /** + * Set the pull direction of this pin. + * @param name pin to set the pull mode on + * @param pull one of the mbed pull configurations: PullUp, PullDown, PullNone + */ + //% help=pins/set-pull weight=17 blockGap=8 + //% blockId=device_set_pull block="set pull|pin %pin|to %pull" + //% blockNamespace=pins + //% name.fieldEditor="gridpicker" + //% name.fieldOptions.width=220 + //% name.fieldOptions.columns=4 shim=DigitalInOutPinMethods::setPull + setPull(pull: PinPullMode): void; +} +declare namespace control { + + /** + * Announce that an event happened to registered handlers. + * @param src ID of the Component that generated the event + * @param value Component specific code indicating the cause of the event. + * @param mode optional definition of how the event should be processed after construction. + */ + //% weight=21 blockGap=12 blockId="control_raise_event" + //% block="raise event|from %src|with value %value" blockExternalInputs=1 + //% help=control/raise-event shim=control::raiseEvent + function raiseEvent(src: int32, value: int32): void; + + /** + * Allocates the next user notification event + */ + //% help=control/allocate-notify-event shim=control::allocateNotifyEvent + function allocateNotifyEvent(): int32; + + /** + * Determine the version of system software currently running. + */ + //% blockId="control_device_dal_version" block="device dal version" + //% help=control/device-dal-version shim=control::deviceDalVersion + function deviceDalVersion(): string; + + /** Write data to DMESG debugging buffer. */ + //% shim=control::dmesg + function dmesg(s: string): void; + + /** + * Determines if the USB has been enumerated. + */ + //% shim=control::isUSBInitialized + function isUSBInitialized(): boolean; +} +declare namespace serial { + + /** Send DMESG debug buffer over serial. */ + //% shim=serial::writeDmesg + function writeDmesg(): void; +} + +// Auto-generated. Do not edit. Really. diff --git a/libs/core---esp32s2/dal.d.ts b/libs/core---esp32s2/dal.d.ts new file mode 100644 index 00000000..292ab208 --- /dev/null +++ b/libs/core---esp32s2/dal.d.ts @@ -0,0 +1,595 @@ +// Auto-generated. Do not edit. +declare const enum DAL { + // /main/configkeys.h + CFG_PIN_NAME_MSK = 65535, + CFG_PIN_CONFIG_MSK = 4294901760, + CFG_PIN_CONFIG_ACTIVE_LO = 65536, + CFG_MAGIC0 = 513675505, + CFG_MAGIC1 = 539130489, + CFG_PIN_ACCELEROMETER_INT = 1, + CFG_PIN_ACCELEROMETER_SCL = 2, + CFG_PIN_ACCELEROMETER_SDA = 3, + CFG_PIN_BTN_A = 4, + CFG_PIN_BTN_B = 5, + CFG_PIN_BTN_SLIDE = 6, + CFG_PIN_DOTSTAR_CLOCK = 7, + CFG_PIN_DOTSTAR_DATA = 8, + CFG_PIN_FLASH_CS = 9, + CFG_PIN_FLASH_MISO = 10, + CFG_PIN_FLASH_MOSI = 11, + CFG_PIN_FLASH_SCK = 12, + CFG_PIN_LED = 13, + CFG_PIN_LIGHT = 14, + CFG_PIN_MICROPHONE = 15, + CFG_PIN_MIC_CLOCK = 16, + CFG_PIN_MIC_DATA = 17, + CFG_PIN_MISO = 18, + CFG_PIN_MOSI = 19, + CFG_PIN_NEOPIXEL = 20, + CFG_PIN_RX = 21, + CFG_PIN_RXLED = 22, + CFG_PIN_SCK = 23, + CFG_PIN_SCL = 24, + CFG_PIN_SDA = 25, + CFG_PIN_SPEAKER_AMP = 26, + CFG_PIN_TEMPERATURE = 27, + CFG_PIN_TX = 28, + CFG_PIN_TXLED = 29, + CFG_PIN_IR_OUT = 30, + CFG_PIN_IR_IN = 31, + CFG_PIN_DISPLAY_SCK = 32, + CFG_PIN_DISPLAY_MISO = 33, + CFG_PIN_DISPLAY_MOSI = 34, + CFG_PIN_DISPLAY_CS = 35, + CFG_PIN_DISPLAY_DC = 36, + CFG_DISPLAY_WIDTH = 37, + CFG_DISPLAY_HEIGHT = 38, + CFG_DISPLAY_CFG0 = 39, + CFG_DISPLAY_CFG1 = 40, + CFG_DISPLAY_CFG2 = 41, + CFG_DISPLAY_CFG3 = 42, + CFG_PIN_DISPLAY_RST = 43, + CFG_PIN_DISPLAY_BL = 44, + CFG_PIN_SERVO_1 = 45, + CFG_PIN_SERVO_2 = 46, + CFG_PIN_BTN_LEFT = 47, + CFG_PIN_BTN_RIGHT = 48, + CFG_PIN_BTN_UP = 49, + CFG_PIN_BTN_DOWN = 50, + CFG_PIN_BTN_MENU = 51, + CFG_PIN_LED_R = 52, + CFG_PIN_LED_G = 53, + CFG_PIN_LED_B = 54, + CFG_PIN_LED1 = 55, + CFG_PIN_LED2 = 56, + CFG_PIN_LED3 = 57, + CFG_PIN_LED4 = 58, + CFG_SPEAKER_VOLUME = 59, + CFG_PIN_JACK_TX = 60, + CFG_PIN_JACK_SENSE = 61, + CFG_PIN_JACK_HPEN = 62, + CFG_PIN_JACK_BZEN = 63, + CFG_PIN_JACK_PWREN = 64, + CFG_PIN_JACK_SND = 65, + CFG_PIN_JACK_BUSLED = 66, + CFG_PIN_JACK_COMMLED = 67, + CFG_PIN_BTN_SOFT_RESET = 69, + CFG_ACCELEROMETER_TYPE = 70, + CFG_PIN_BTNMX_LATCH = 71, + CFG_PIN_BTNMX_CLOCK = 72, + CFG_PIN_BTNMX_DATA = 73, + CFG_PIN_BTN_MENU2 = 74, + CFG_PIN_BATTSENSE = 75, + CFG_PIN_VIBRATION = 76, + CFG_PIN_PWREN = 77, + CFG_DISPLAY_TYPE = 78, + CFG_PIN_ROTARY_ENCODER_A = 79, + CFG_PIN_ROTARY_ENCODER_B = 80, + CFG_ACCELEROMETER_SPACE = 81, + CFG_PIN_WIFI_MOSI = 82, + CFG_PIN_WIFI_MISO = 83, + CFG_PIN_WIFI_SCK = 84, + CFG_PIN_WIFI_TX = 85, + CFG_PIN_WIFI_RX = 86, + CFG_PIN_WIFI_CS = 87, + CFG_PIN_WIFI_BUSY = 88, + CFG_PIN_WIFI_RESET = 89, + CFG_PIN_WIFI_GPIO0 = 90, + CFG_PIN_WIFI_AT_TX = 91, + CFG_PIN_WIFI_AT_RX = 92, + CFG_PIN_USB_POWER = 93, + ACCELEROMETER_TYPE_LIS3DH = 50, + ACCELEROMETER_TYPE_LIS3DH_ALT = 48, + ACCELEROMETER_TYPE_MMA8453 = 56, + ACCELEROMETER_TYPE_FXOS8700 = 60, + ACCELEROMETER_TYPE_MMA8653 = 58, + ACCELEROMETER_TYPE_MSA300 = 76, + ACCELEROMETER_TYPE_MPU6050 = 104, + DISPLAY_TYPE_ST7735 = 7735, + DISPLAY_TYPE_ILI9341 = 9341, + DISPLAY_TYPE_SMART = 4242, + CFG_PIN_A0 = 100, + CFG_PIN_A1 = 101, + CFG_PIN_A2 = 102, + CFG_PIN_A3 = 103, + CFG_PIN_A4 = 104, + CFG_PIN_A5 = 105, + CFG_PIN_A6 = 106, + CFG_PIN_A7 = 107, + CFG_PIN_A8 = 108, + CFG_PIN_A9 = 109, + CFG_PIN_A10 = 110, + CFG_PIN_A11 = 111, + CFG_PIN_A12 = 112, + CFG_PIN_A13 = 113, + CFG_PIN_A14 = 114, + CFG_PIN_A15 = 115, + CFG_PIN_A16 = 116, + CFG_PIN_A17 = 117, + CFG_PIN_A18 = 118, + CFG_PIN_A19 = 119, + CFG_PIN_A20 = 120, + CFG_PIN_A21 = 121, + CFG_PIN_A22 = 122, + CFG_PIN_A23 = 123, + CFG_PIN_A24 = 124, + CFG_PIN_A25 = 125, + CFG_PIN_A26 = 126, + CFG_PIN_A27 = 127, + CFG_PIN_A28 = 128, + CFG_PIN_A29 = 129, + CFG_PIN_A30 = 130, + CFG_PIN_A31 = 131, + CFG_PIN_D0 = 150, + CFG_PIN_D1 = 151, + CFG_PIN_D2 = 152, + CFG_PIN_D3 = 153, + CFG_PIN_D4 = 154, + CFG_PIN_D5 = 155, + CFG_PIN_D6 = 156, + CFG_PIN_D7 = 157, + CFG_PIN_D8 = 158, + CFG_PIN_D9 = 159, + CFG_PIN_D10 = 160, + CFG_PIN_D11 = 161, + CFG_PIN_D12 = 162, + CFG_PIN_D13 = 163, + CFG_PIN_D14 = 164, + CFG_PIN_D15 = 165, + CFG_PIN_D16 = 166, + CFG_PIN_D17 = 167, + CFG_PIN_D18 = 168, + CFG_PIN_D19 = 169, + CFG_PIN_D20 = 170, + CFG_PIN_D21 = 171, + CFG_PIN_D22 = 172, + CFG_PIN_D23 = 173, + CFG_PIN_D24 = 174, + CFG_PIN_D25 = 175, + CFG_PIN_D26 = 176, + CFG_PIN_D27 = 177, + CFG_PIN_D28 = 178, + CFG_PIN_D29 = 179, + CFG_PIN_D30 = 180, + CFG_PIN_D31 = 181, + CFG_NUM_NEOPIXELS = 200, + CFG_NUM_DOTSTARS = 201, + CFG_DEFAULT_BUTTON_MODE = 202, + CFG_SWD_ENABLED = 203, + CFG_FLASH_BYTES = 204, + CFG_RAM_BYTES = 205, + CFG_SYSTEM_HEAP_BYTES = 206, + CFG_LOW_MEM_SIMULATION_KB = 207, + CFG_BOOTLOADER_BOARD_ID = 208, + CFG_UF2_FAMILY = 209, + CFG_PINS_PORT_SIZE = 210, + CFG_BOOTLOADER_PROTECTION = 211, + CFG_POWER_DEEPSLEEP_TIMEOUT = 212, + CFG_ANALOG_BUTTON_THRESHOLD = 213, + CFG_CPU_MHZ = 214, + CFG_CONTROLLER_LIGHT_MAX_BRIGHTNESS = 215, + CFG_ANALOG_JOYSTICK_MIN = 216, + CFG_ANALOG_JOYSTICK_MAX = 217, + CFG_TIMERS_TO_USE = 218, + CFG_PIN_ONBOARD_DOTSTAR_CLOCK = 219, + CFG_PIN_ONBOARD_DOTSTAR_DATA = 220, + CFG_NUM_ONBOARD_DOTSTARS = 221, + CFG_PIN_ONBOARD_NEOPIXEL = 222, + CFG_NUM_ONBOARD_NEOPIXELS = 223, + CFG_MATRIX_KEYPAD_MESSAGE_ID = 239, + CFG_NUM_MATRIX_KEYPAD_ROWS = 240, + CFG_PIN_MATRIX_KEYPAD_ROW0 = 241, + CFG_PIN_MATRIX_KEYPAD_ROW1 = 242, + CFG_PIN_MATRIX_KEYPAD_ROW2 = 243, + CFG_PIN_MATRIX_KEYPAD_ROW3 = 244, + CFG_PIN_MATRIX_KEYPAD_ROW4 = 245, + CFG_PIN_MATRIX_KEYPAD_ROW5 = 246, + CFG_PIN_MATRIX_KEYPAD_ROW6 = 247, + CFG_PIN_MATRIX_KEYPAD_ROW7 = 248, + CFG_NUM_MATRIX_KEYPAD_COLS = 250, + CFG_PIN_MATRIX_KEYPAD_COL0 = 251, + CFG_PIN_MATRIX_KEYPAD_COL1 = 252, + CFG_PIN_MATRIX_KEYPAD_COL2 = 253, + CFG_PIN_MATRIX_KEYPAD_COL3 = 254, + CFG_PIN_MATRIX_KEYPAD_COL4 = 255, + CFG_PIN_MATRIX_KEYPAD_COL5 = 256, + CFG_PIN_MATRIX_KEYPAD_COL6 = 257, + CFG_PIN_MATRIX_KEYPAD_COL7 = 258, + CFG_PIN_B0 = 300, + CFG_PIN_B1 = 301, + CFG_PIN_B2 = 302, + CFG_PIN_B3 = 303, + CFG_PIN_B4 = 304, + CFG_PIN_B5 = 305, + CFG_PIN_B6 = 306, + CFG_PIN_B7 = 307, + CFG_PIN_B8 = 308, + CFG_PIN_B9 = 309, + CFG_PIN_B10 = 310, + CFG_PIN_B11 = 311, + CFG_PIN_B12 = 312, + CFG_PIN_B13 = 313, + CFG_PIN_B14 = 314, + CFG_PIN_B15 = 315, + CFG_PIN_B16 = 316, + CFG_PIN_B17 = 317, + CFG_PIN_B18 = 318, + CFG_PIN_B19 = 319, + CFG_PIN_B20 = 320, + CFG_PIN_B21 = 321, + CFG_PIN_B22 = 322, + CFG_PIN_B23 = 323, + CFG_PIN_B24 = 324, + CFG_PIN_B25 = 325, + CFG_PIN_B26 = 326, + CFG_PIN_B27 = 327, + CFG_PIN_B28 = 328, + CFG_PIN_B29 = 329, + CFG_PIN_B30 = 330, + CFG_PIN_B31 = 331, + CFG_PIN_C0 = 350, + CFG_PIN_C1 = 351, + CFG_PIN_C2 = 352, + CFG_PIN_C3 = 353, + CFG_PIN_C4 = 354, + CFG_PIN_C5 = 355, + CFG_PIN_C6 = 356, + CFG_PIN_C7 = 357, + CFG_PIN_C8 = 358, + CFG_PIN_C9 = 359, + CFG_PIN_C10 = 360, + CFG_PIN_C11 = 361, + CFG_PIN_C12 = 362, + CFG_PIN_C13 = 363, + CFG_PIN_C14 = 364, + CFG_PIN_C15 = 365, + CFG_PIN_C16 = 366, + CFG_PIN_C17 = 367, + CFG_PIN_C18 = 368, + CFG_PIN_C19 = 369, + CFG_PIN_C20 = 370, + CFG_PIN_C21 = 371, + CFG_PIN_C22 = 372, + CFG_PIN_C23 = 373, + CFG_PIN_C24 = 374, + CFG_PIN_C25 = 375, + CFG_PIN_C26 = 376, + CFG_PIN_C27 = 377, + CFG_PIN_C28 = 378, + CFG_PIN_C29 = 379, + CFG_PIN_C30 = 380, + CFG_PIN_C31 = 381, + CFG_PIN_P0 = 400, + CFG_PIN_P1 = 401, + CFG_PIN_P2 = 402, + CFG_PIN_P3 = 403, + CFG_PIN_P4 = 404, + CFG_PIN_P5 = 405, + CFG_PIN_P6 = 406, + CFG_PIN_P7 = 407, + CFG_PIN_P8 = 408, + CFG_PIN_P9 = 409, + CFG_PIN_P10 = 410, + CFG_PIN_P11 = 411, + CFG_PIN_P12 = 412, + CFG_PIN_P13 = 413, + CFG_PIN_P14 = 414, + CFG_PIN_P15 = 415, + CFG_PIN_P16 = 416, + CFG_PIN_P17 = 417, + CFG_PIN_P18 = 418, + CFG_PIN_P19 = 419, + CFG_PIN_P20 = 420, + CFG_PIN_P21 = 421, + CFG_PIN_P22 = 422, + CFG_PIN_P23 = 423, + CFG_PIN_P24 = 424, + CFG_PIN_P25 = 425, + CFG_PIN_P26 = 426, + CFG_PIN_P27 = 427, + CFG_PIN_P28 = 428, + CFG_PIN_P29 = 429, + CFG_PIN_P30 = 430, + CFG_PIN_P31 = 431, + CFG_PIN_P32 = 432, + CFG_PIN_P33 = 433, + CFG_PIN_P34 = 434, + CFG_PIN_P35 = 435, + CFG_PIN_P36 = 436, + CFG_PIN_P37 = 437, + CFG_PIN_P38 = 438, + CFG_PIN_P39 = 439, + CFG_PIN_P40 = 440, + CFG_PIN_P41 = 441, + CFG_PIN_P42 = 442, + CFG_PIN_P43 = 443, + CFG_PIN_P44 = 444, + CFG_PIN_P45 = 445, + CFG_PIN_P46 = 446, + CFG_PIN_P47 = 447, + CFG_PIN_P48 = 448, + CFG_PIN_P49 = 449, + CFG_PIN_P50 = 450, + CFG_PIN_P51 = 451, + CFG_PIN_P52 = 452, + CFG_PIN_P53 = 453, + CFG_PIN_P54 = 454, + CFG_PIN_P55 = 455, + CFG_PIN_P56 = 456, + CFG_PIN_P57 = 457, + CFG_PIN_P58 = 458, + CFG_PIN_P59 = 459, + CFG_PIN_P60 = 460, + CFG_PIN_P61 = 461, + CFG_PIN_P62 = 462, + CFG_PIN_P63 = 463, + CFG_PIN_LORA_MISO = 1001, + CFG_PIN_LORA_MOSI = 1002, + CFG_PIN_LORA_SCK = 1003, + CFG_PIN_LORA_CS = 1004, + CFG_PIN_LORA_BOOT = 1005, + CFG_PIN_LORA_RESET = 1006, + CFG_PIN_IRRXLED = 1007, + CFG_PIN_IRTXLED = 1008, + CFG_PIN_LCD_RESET = 1009, + CFG_PIN_LCD_ENABLE = 1010, + CFG_PIN_LCD_DATALINE4 = 1011, + CFG_PIN_LCD_DATALINE5 = 1012, + CFG_PIN_LCD_DATALINE6 = 1013, + CFG_PIN_LCD_DATALINE7 = 1014, + CFG_NUM_LCD_COLUMNS = 1015, + CFG_NUM_LCD_ROWS = 1016, + CFG_PIN_RCC0 = 1017, + CFG_PIN_RCC1 = 1018, + CFG_PIN_RCC2 = 1019, + CFG_PIN_RCC3 = 1020, + CFG_PIN_RCC4 = 1021, + CFG_PIN_RCC5 = 1022, + CFG_PIN_RCC6 = 1023, + CFG_PIN_RCC7 = 1024, + CFG_PIN_SERVO0 = 1025, + CFG_PIN_SERVO1 = 1026, + CFG_PIN_SERVO2 = 1027, + CFG_PIN_SERVO3 = 1028, + CFG_PIN_SERVO4 = 1029, + CFG_PIN_SERVO5 = 1030, + CFG_PIN_SERVO6 = 1031, + CFG_PIN_SERVO7 = 1032, + CFG_PIN_SERVO8 = 1033, + CFG_PIN_PI_TX = 1034, + CFG_PIN_PI_RX = 1035, + CFG_PIN_GPS_SDA = 1036, + CFG_PIN_GPS_SCL = 1037, + CFG_PIN_GPS_TX = 1038, + CFG_PIN_GPS_RX = 1039, + CFG_PIN_GROVE0 = 1040, + CFG_PIN_GROVE1 = 1041, + CFG_PIN_SS = 1042, + CFG_PIN_D33 = 183, + CFG_PIN_D34 = 184, + CFG_PIN_D35 = 185, + CFG_PIN_D36 = 186, + CFG_PIN_D37 = 187, + CFG_PIN_D38 = 188, + CFG_PIN_D39 = 189, + CFG_PIN_D40 = 190, + CFG_PIN_D41 = 191, + CFG_PIN_D42 = 192, + CFG_PIN_D43 = 193, + CFG_PIN_D44 = 194, + CFG_PIN_D45 = 195, + CFG_PIN_D46 = 196, + CFG_PIN_D47 = 197, + CFG_PIN_D48 = 198, + CFG_PIN_D49 = 199, + CFG_PIN_D50 = 259, + CFG_PIN_D51 = 260, + CFG_PIN_D52 = 261, + CFG_PIN_D53 = 262, + CFG_PIN_TX1 = 263, + CFG_PIN_TX2 = 264, + CFG_PIN_TX3 = 265, + CFG_PIN_RX1 = 266, + CFG_PIN_RX2 = 267, + CFG_PIN_RX3 = 268, + CFG_PIN_SCL1 = 269, + CFG_PIN_SDA1 = 270, + CFG_PIN_PCC_D0 = 271, + CFG_PIN_PCC_D1 = 272, + CFG_PIN_PCC_D2 = 273, + CFG_PIN_PCC_D3 = 274, + CFG_PIN_PCC_D4 = 275, + CFG_PIN_PCC_D5 = 276, + CFG_PIN_PCC_D6 = 277, + CFG_PIN_PCC_D7 = 278, + CFG_PIN_PCC_D8 = 279, + CFG_PIN_PCC_D9 = 280, + CFG_PIN_PCC_D10 = 281, + CFG_PIN_PCC_D11 = 282, + CFG_PIN_PCC_D12 = 283, + CFG_PIN_PCC_D13 = 284, + CFG_PIN_CC_DEN1 = 285, + CFG_PIN_CC_DEN2 = 286, + CFG_PIN_CC_CLK = 287, + CFG_PIN_XCC_CLK = 288, + CFG_PIN_JDPWR_PRE_SENSE = 1100, + CFG_PIN_JDPWR_GND_SENSE = 1101, + CFG_PIN_JDPWR_PULSE = 1102, + CFG_PIN_JDPWR_OVERLOAD_LED = 1103, + CFG_PIN_JDPWR_ENABLE = 1104, + CFG_PIN_JDPWR_FAULT = 1105, + // /main/jacdac/JacdacBLE.h + JACDAC_BLE_BUFFER_SIZE = 254, + MICROBIT_JACDAC_S_EVT_RX = 1, + MICROBIT_JACDAC_S_EVT_TX = 1, + DEVICE_ID_JACDAC_BLE = 3056, + JD_BLE_STATUS_IN_USE = 8, + // /main/jacdac/jdprotocol.h + JD_SERIAL_PAYLOAD_SIZE = 236, + JD_SERIAL_FULL_HEADER_SIZE = 16, + JD_SERVICE_CLASS_CTRL = 0, + JD_SERVICE_NUMBER_CTRL = 0, + JD_SERVICE_NUMBER_MASK = 63, + JD_SERVICE_NUMBER_CRC_ACK = 63, + JD_FRAME_FLAG_COMMAND = 1, + JD_FRAME_FLAG_ACK_REQUESTED = 2, + JD_FRAME_FLAG_IDENTIFIER_IS_SERVICE_CLASS = 4, + JD_REG_INTENSITY = 1, + JD_REG_VALUE = 2, + JD_REG_IS_STREAMING = 3, + JD_REG_STREAMING_INTERVAL = 4, + JD_REG_LOW_THRESHOLD = 5, + JD_REG_HIGH_THRESHOLD = 6, + JD_REG_MAX_POWER = 7, + JD_REG_READING = 257, + JD_CMD_GET_REG = 4096, + JD_CMD_SET_REG = 8192, + JD_CMD_ADVERTISEMENT_DATA = 0, + JD_CMD_EVENT = 1, + JD_CMD_CALIBRATE = 2, + JD_CMD_GET_DESCRIPTION = 3, + JD_CMD_CTRL_NOOP = 128, + JD_CMD_CTRL_IDENTIFY = 129, + JD_CMD_CTRL_RESET = 130, + JD_REG_CTRL_DEVICE_DESCRIPTION = 384, + JD_REG_CTRL_DEVICE_CLASS = 385, + JD_REG_CTRL_TEMPERATURE = 386, + JD_REG_CTRL_LIGHT_LEVEL = 387, + JD_REG_CTRL_BL_DEVICE_CLASS = 388, + JDSPI_MAGIC = 31437, + JDSPI_MAGIC_NOOP = 46029, + // /main/pintarget.h + DEVICE_PIN_EVT_RISE = 2, + DEVICE_PIN_EVT_FALL = 3, + DEVICE_PIN_EVT_PULSE_HI = 4, + DEVICE_PIN_EVT_PULSE_LO = 5, + DEVICE_PIN_EVENT_NONE = 0, + DEVICE_PIN_EVENT_ON_EDGE = 1, + DEVICE_PIN_EVENT_ON_PULSE = 2, + DEVICE_PIN_EVENT_ON_TOUCH = 3, + // /main/platform.h + PXT_ESP32 = 1, + PAGE_SIZE = 1024, + DEV_NUM_PINS = 50, + IMAGE_BITS = 4, + // /main/pxt.h + OUTPUT_BITS = 12, + DEVICE_EVT_ANY = 0, + DEVICE_ID_NOTIFY_ONE = 1022, + DEVICE_ID_NOTIFY = 1023, + DEVICE_ID_JACDAC = 30, + DEVICE_ID_JACDAC_PHYS = 31, + // /main/pxtbase.h + PXT32 = 1, + PXT64 = 1, + PXT_REFCNT_FLASH = 65534, + VTABLE_MAGIC = 249, + VTABLE_MAGIC2 = 248, + Undefined = 0, + Boolean = 1, + Number = 2, + String = 3, + Object = 4, + BoxedString = 1, + BoxedNumber = 2, + BoxedBuffer = 3, + RefAction = 4, + RefImage = 5, + RefCollection = 6, + RefRefLocal = 7, + RefMap = 8, + RefMImage = 9, + MMap = 10, + BoxedString_SkipList = 11, + BoxedString_ASCII = 12, + ZPin = 13, + User0 = 16, + IMAGE_HEADER_MAGIC = 135, + Int8LE = 1, + UInt8LE = 2, + Int16LE = 3, + UInt16LE = 4, + Int32LE = 5, + Int8BE = 6, + UInt8BE = 7, + Int16BE = 8, + UInt16BE = 9, + Int32BE = 10, + UInt32LE = 11, + UInt32BE = 12, + Float32LE = 13, + Float64LE = 14, + Float32BE = 15, + Float64BE = 16, + NUM_TRY_FRAME_REGS = 3, + GC = 0, + PXT_STRING_SKIP_INCR = 16, + // /main/pxtconfig.h + PXT_VM = 1, + PXT_UF2_FAMILY = 3218951918, + // /main/pxtcore.h + PXT_HARD_FLOAT = 1, + // /main/uf2hid.h + UF2_HID_H = 1, + HF2_CMD_BININFO = 1, + HF2_MODE_BOOTLOADER = 1, + HF2_MODE_USERSPACE = 2, + HF2_CMD_INFO = 2, + HF2_CMD_RESET_INTO_APP = 3, + HF2_CMD_RESET_INTO_BOOTLOADER = 4, + HF2_CMD_START_FLASH = 5, + HF2_CMD_WRITE_FLASH_PAGE = 6, + HF2_CMD_CHKSUM_PAGES = 7, + HF2_CMD_READ_WORDS = 8, + HF2_CMD_WRITE_WORDS = 9, + HF2_CMD_DMESG = 16, + HF2_EV_MASK = 8388608, + HF2_CMD_JDS_CONFIG = 32, + HF2_CMD_JDS_SEND = 33, + HF2_EV_JDS_PACKET = 8388640, + HF2_FLAG_SERIAL_OUT = 128, + HF2_FLAG_SERIAL_ERR = 192, + HF2_FLAG_CMDPKT_LAST = 64, + HF2_FLAG_CMDPKT_BODY = 0, + HF2_FLAG_MASK = 192, + HF2_SIZE_MASK = 63, + HF2_STATUS_OK = 0, + HF2_STATUS_INVALID_CMD = 1, + HF2_STATUS_INVALID_STATE = 2, + // /main/vm.h + VM_OPCODE_BASE_SIZE = 6, + VM_OPCODE_ARG_POS = 7, + VM_RTCALL_PUSH_MASK = 8192, + VM_MAX_FUNCTION_STACK = 200, + VM_STACK_SIZE = 1000, + Invalid = 0, + InfoHeader = 1, + OpCodeMap = 2, + NumberLiterals = 3, + ConfigData = 4, + IfaceMemberNames = 5, + NumberBoxes = 6, + Literal = 33, + VTable = 34, + PXT_WAIT_SOURCE_PROMISE = 131056, +} diff --git a/libs/core---esp32s2/enums.d.ts b/libs/core---esp32s2/enums.d.ts new file mode 100644 index 00000000..e28759fa --- /dev/null +++ b/libs/core---esp32s2/enums.d.ts @@ -0,0 +1,33 @@ +// Auto-generated. Do not edit. + + + declare const enum PulseValue { + //% block=high + High = 4, // DEVICE_PIN_EVT_PULSE_HI + //% block=low + Low = 5, // DEVICE_PIN_EVT_PULSE_LO + } + + + declare const enum PinEvent { + //% block="pulse high" + PulseHigh = 4, // DEVICE_PIN_EVT_PULSE_HI + //% block="pulse low" + PulseLow = 5, // DEVICE_PIN_EVT_PULSE_LO + //% block="rise" + Rise = 2, // DEVICE_PIN_EVT_RISE + //% block="fall" + Fall = 3, // DEVICE_PIN_EVT_FALL + } + + + declare const enum PinPullMode { + //% block="down" + PullDown = 0, + //% block="up" + PullUp = 1, + //% block="none" + PullNone = 2, + } + +// Auto-generated. Do not edit. Really. diff --git a/libs/core---esp32s2/pxt.json b/libs/core---esp32s2/pxt.json new file mode 100644 index 00000000..05253d7d --- /dev/null +++ b/libs/core---esp32s2/pxt.json @@ -0,0 +1,3 @@ +{ + "additionalFilePath": "../../node_modules/pxt-common-packages/libs/core---esp32s2" +} diff --git a/libs/core---esp32s2/shims.d.ts b/libs/core---esp32s2/shims.d.ts new file mode 100644 index 00000000..82d6af82 --- /dev/null +++ b/libs/core---esp32s2/shims.d.ts @@ -0,0 +1,140 @@ +// Auto-generated. Do not edit. +declare namespace pins { + + /** + * Get a pin by configuration id (DAL.CFG_PIN...) + */ + //% shim=pins::pinByCfg + function pinByCfg(key: int32): DigitalInOutPin; + + /** + * Create a new zero-initialized buffer. + * @param size number of bytes in the buffer + */ + //% shim=pins::createBuffer + function createBuffer(size: int32): Buffer; +} + + +declare interface DigitalInOutPin { + /** + * Read a pin or connector as either 0 or 1 + * @param name pin to read from + */ + //% help=pins/digital-read weight=61 + //% blockId=device_get_digital_pin block="digital read|pin %name" blockGap=8 + //% blockNamespace=pins + //% name.fieldEditor="gridpicker" + //% name.fieldOptions.width=220 + //% name.fieldOptions.columns=4 shim=DigitalInOutPinMethods::digitalRead + digitalRead(): boolean; + + /** + * Set a pin or connector value to either 0 or 1. + * @param name pin to write to + * @param value value to set on the pin + */ + //% help=pins/digital-write weight=60 + //% blockId=device_set_digital_pin block="digital write|pin %name|to %value=toggleHighLow" + //% blockNamespace=pins + //% name.fieldEditor="gridpicker" + //% name.fieldOptions.width=220 + //% name.fieldOptions.columns=4 shim=DigitalInOutPinMethods::digitalWrite + digitalWrite(value: boolean): void; + + /** + * Make this pin a digital input, and create events where the timestamp is the duration + * that this pin was either ``high`` or ``low``. + */ + //% help=pins/on-pulsed weight=16 blockGap=8 + //% blockId=pins_on_pulsed block="on|pin %pin|pulsed %pulse" + //% blockNamespace=pins + //% pin.fieldEditor="gridpicker" + //% pin.fieldOptions.width=220 + //% pin.fieldOptions.columns=4 + //% deprecated=1 hidden=1 shim=DigitalInOutPinMethods::onPulsed + onPulsed(pulse: PulseValue, body: () => void): void; + + /** + * Register code to run when a pin event occurs. + */ + //% help=pins/on-event weight=20 blockGap=8 + //% blockId=pinsonevent block="on|pin %pin|%event" + //% blockNamespace=pins + //% pin.fieldEditor="gridpicker" + //% pin.fieldOptions.width=220 + //% pin.fieldOptions.columns=4 shim=DigitalInOutPinMethods::onEvent + onEvent(event: PinEvent, body: () => void): void; + + /** + * Return the duration of a pulse in microseconds + * @param name the pin which measures the pulse + * @param value the value of the pulse (default high) + * @param maximum duration in micro-seconds + */ + //% blockId="pins_pulse_in" block="pulse in (µs)|pin %name|pulsed %high||timeout %maxDuration (µs)" + //% weight=18 blockGap=8 + //% help="pins/pulse-in" + //% blockNamespace=pins + //% pin.fieldEditor="gridpicker" + //% pin.fieldOptions.width=220 + //% pin.fieldOptions.columns=4 maxDuration.defl=2000000 shim=DigitalInOutPinMethods::pulseIn + pulseIn(value: PulseValue, maxDuration?: int32): int32; + + /** + * Set the pull direction of this pin. + * @param name pin to set the pull mode on + * @param pull one of the mbed pull configurations: PullUp, PullDown, PullNone + */ + //% help=pins/set-pull weight=17 blockGap=8 + //% blockId=device_set_pull block="set pull|pin %pin|to %pull" + //% blockNamespace=pins + //% name.fieldEditor="gridpicker" + //% name.fieldOptions.width=220 + //% name.fieldOptions.columns=4 shim=DigitalInOutPinMethods::setPull + setPull(pull: PinPullMode): void; +} +declare namespace control { + + /** + * Announce that an event happened to registered handlers. + * @param src ID of the Component that generated the event + * @param value Component specific code indicating the cause of the event. + * @param mode optional definition of how the event should be processed after construction. + */ + //% weight=21 blockGap=12 blockId="control_raise_event" + //% block="raise event|from %src|with value %value" blockExternalInputs=1 + //% help=control/raise-event shim=control::raiseEvent + function raiseEvent(src: int32, value: int32): void; + + /** + * Allocates the next user notification event + */ + //% help=control/allocate-notify-event shim=control::allocateNotifyEvent + function allocateNotifyEvent(): int32; + + /** + * Determine the version of system software currently running. + */ + //% blockId="control_device_dal_version" block="device dal version" + //% help=control/device-dal-version shim=control::deviceDalVersion + function deviceDalVersion(): string; + + /** Write data to DMESG debugging buffer. */ + //% shim=control::dmesg + function dmesg(s: string): void; + + /** + * Determines if the USB has been enumerated. + */ + //% shim=control::isUSBInitialized + function isUSBInitialized(): boolean; +} +declare namespace serial { + + /** Send DMESG debug buffer over serial. */ + //% shim=serial::writeDmesg + function writeDmesg(): void; +} + +// Auto-generated. Do not edit. Really. diff --git a/libs/espressif-esp32-devkit-c/README.md b/libs/espressif-esp32-devkit-c/README.md new file mode 100644 index 00000000..b16dcc0a --- /dev/null +++ b/libs/espressif-esp32-devkit-c/README.md @@ -0,0 +1,4 @@ +# Espressif + +The esp32 library. + diff --git a/libs/espressif-esp32-devkit-c/board.json b/libs/espressif-esp32-devkit-c/board.json new file mode 100644 index 00000000..9fd4afe2 --- /dev/null +++ b/libs/espressif-esp32-devkit-c/board.json @@ -0,0 +1,376 @@ +{ + "driveDisplayName": "", + "visual": { + "image": "pkg://board.svg", + "useCrocClips": false, + "width": 325, + "height": 163, + "pinDist": 15, + "pinBlocks": [ + { + "x": 281.54592278455226, + "y": 5.286999757717413, + "labels": [ + "_3V" + ] + }, + { + "x": 266.6081685923919, + "y": 5.286999757717413, + "labels": [ + "EN" + ] + }, + { + "x": 251.67041440023158, + "y": 5.286999757717413, + "labels": [ + "VP" + ] + }, + { + "x": 236.73269650528218, + "y": 5.286999757717413, + "labels": [ + "VN" + ] + }, + { + "x": 221.7949786103328, + "y": 5.286999757717413, + "labels": [ + "P34" + ] + }, + { + "x": 206.85820444286796, + "y": 5.286999757717413, + "labels": [ + "P35" + ] + }, + { + "x": 191.9204683993131, + "y": 5.286999757717413, + "labels": [ + "P32" + ] + }, + { + "x": 176.9827505043637, + "y": 5.286999757717413, + "labels": [ + "P33" + ] + }, + { + "x": 162.04501446080883, + "y": 5.286999757717413, + "labels": [ + "P25" + ] + }, + { + "x": 147.1072602686485, + "y": 5.286999757717413, + "labels": [ + "P26" + ] + }, + { + "x": 132.16952422509362, + "y": 5.286999757717413, + "labels": [ + "P27" + ] + }, + { + "x": 117.23178818153876, + "y": 5.286999757717413, + "labels": [ + "P14" + ] + }, + { + "x": 102.29407028658937, + "y": 5.286999757717413, + "labels": [ + "P12" + ] + }, + { + "x": 87.35631609442903, + "y": 5.286999757717413, + "labels": [ + "GND" + ] + }, + { + "x": 72.41957822417514, + "y": 5.286999757717413, + "labels": [ + "P13" + ] + }, + { + "x": 57.48186032922575, + "y": 5.286999757717413, + "labels": [ + "D2" + ] + }, + { + "x": 42.54411521136815, + "y": 5.286999757717413, + "labels": [ + "D3" + ] + }, + { + "x": 27.606379167813287, + "y": 5.286999757717413, + "labels": [ + "CMD" + ] + }, + { + "x": 12.66864312425842, + "y": 5.286999757717413, + "labels": [ + "_5V" + ] + }, + { + "x": 281.8268994944748, + "y": 154.50397984778954, + "labels": [ + "GND3" + ] + }, + { + "x": 266.88914530231443, + "y": 154.50397984778954, + "labels": [ + "P23" + ] + }, + { + "x": 251.95142740736503, + "y": 154.50397984778954, + "labels": [ + "P22" + ] + }, + { + "x": 237.0136732152047, + "y": 154.50397984778954, + "labels": [ + "TX" + ] + }, + { + "x": 222.07591902304438, + "y": 154.50397984778954, + "labels": [ + "RX" + ] + }, + { + "x": 207.13821927670045, + "y": 154.50397984778954, + "labels": [ + "P21" + ] + }, + { + "x": 192.20146325784108, + "y": 154.50397984778954, + "labels": [ + "GND2" + ] + }, + { + "x": 177.26372721428623, + "y": 154.50397984778954, + "labels": [ + "P19" + ] + }, + { + "x": 162.32600931933683, + "y": 154.50397984778954, + "labels": [ + "P18" + ] + }, + { + "x": 147.38827327578196, + "y": 154.50397984778954, + "labels": [ + "P5" + ] + }, + { + "x": 132.45051908362163, + "y": 154.50397984778954, + "labels": [ + "P17" + ] + }, + { + "x": 117.51278304006675, + "y": 154.50397984778954, + "labels": [ + "P16" + ] + }, + { + "x": 102.57504699651189, + "y": 154.50397984778954, + "labels": [ + "P4" + ] + }, + { + "x": 87.63731095295702, + "y": 154.50397984778954, + "labels": [ + "P0" + ] + }, + { + "x": 72.69957490940216, + "y": 154.50397984778954, + "labels": [ + "P2" + ] + }, + { + "x": 57.76283703914827, + "y": 154.50397984778954, + "labels": [ + "P15" + ] + }, + { + "x": 42.82511006989614, + "y": 154.50397984778954, + "labels": [ + "D1" + ] + }, + { + "x": 27.887374026341277, + "y": 154.50397984778954, + "labels": [ + "D0" + ] + }, + { + "x": 12.94963798278641, + "y": 154.50397984778954, + "labels": [ + "CLK" + ] + }, + { + "x": 16.661572260040813, + "y": 26.173999092331044, + "labels": [ + "BTN_RESET" + ] + } + ], + "leds": [ + { + "x": 79.80546174743039, + "y": 33.66799892398028, + "w": 7.4058651378802605, + "h": 5.122007876856312, + "color": "#ff0000", + "label": "LED" + } + ], + "touchPads": [], + "buttons": [ + { + "x": 16.661572260040813, + "y": 120.33202156315024, + "w": 24.02557763939916, + "h": 16.885977984351396, + "label": "BTN_BOOT" + } + ] + }, + "gpioPinMap": { + "_3V": "_3V", + "": "_5V", + "3V": "_3V", + "EN": "EN", + "VP": "VP", + "VN": "VN", + "P34": "P34", + "P35": "P35", + "P32": "P32", + "P33": "P33", + "P25": "P25", + "P26": "P26", + "P27": "P27", + "P14": "P14", + "P12": "P12", + "GND": "GND", + "P13": "P13", + "D2": "D2", + "D3": "D3", + "CMD": "CMD", + "_5V": "_5V", + "5V": "_5V", + "GND3": "GND3", + "P23": "P23", + "P22": "P22", + "TX": "TX", + "RX": "RX", + "P21": "P21", + "GND2": "GND2", + "P19": "P19", + "P18": "P18", + "P5": "P5", + "P17": "P17", + "P16": "P16", + "P4": "P4", + "P0": "P0", + "P2": "P2", + "P15": "P15", + "D1": "D1", + "D0": "D0", + "CLK": "CLK", + "BTN_RESET": "BTN_RESET", + "BTN": "BTN_BOOT", + "RESET": "BTN_RESET", + "BTN_BOOT": "BTN_BOOT", + "BOOT": "BTN_BOOT", + "LED": "LED" + }, + "groundPins": [ + "GND", + "GND3", + "GND2" + ], + "threeVoltPins": [ + "_3V" + ], + "fiveVoltPins": [ + "_5V" + ], + "i2cPins": { + "SDA": "SDA", + "SCL": "SCL" + }, + "onboardComponents": [], + "marginWhenBreadboarding": [ + 0, + 0, + 80, + 0 + ] +} \ No newline at end of file diff --git a/libs/espressif-esp32-devkit-c/board.svg b/libs/espressif-esp32-devkit-c/board.svg new file mode 100644 index 00000000..64d4383d --- /dev/null +++ b/libs/espressif-esp32-devkit-c/board.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libs/espressif-esp32-devkit-c/boardhd.svg b/libs/espressif-esp32-devkit-c/boardhd.svg new file mode 100644 index 00000000..68399fe2 --- /dev/null +++ b/libs/espressif-esp32-devkit-c/boardhd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libs/espressif-esp32-devkit-c/config.ts b/libs/espressif-esp32-devkit-c/config.ts new file mode 100644 index 00000000..a7406770 --- /dev/null +++ b/libs/espressif-esp32-devkit-c/config.ts @@ -0,0 +1,41 @@ +namespace config { + export const PIN_P0 = 0 + export const PIN_P1 = 1 + export const PIN_P2 = 2 + export const PIN_P3 = 3 + export const PIN_P4 = 4 + export const PIN_P5 = 5 + export const PIN_P12 = 12 + export const PIN_P13 = 13 + export const PIN_P14 = 14 + export const PIN_P15 = 15 + export const PIN_P16 = 16 + export const PIN_P17 = 17 + export const PIN_P18 = 18 + export const PIN_P19 = 19 + export const PIN_P21 = 21 + export const PIN_P22 = 22 + export const PIN_P23 = 23 + export const PIN_P25 = 25 + export const PIN_P26 = 26 + export const PIN_P27 = 27 + export const PIN_P32 = 32 + export const PIN_P33 = 33 + export const PIN_P34 = 34 + export const PIN_P35 = 35 + export const PIN_P36 = 36 + export const PIN_P39 = 39 + + // labels on board; programming port + export const PIN_TX = PIN_P1 + export const PIN_RX = PIN_P3 + + // arduino assignmnets? + export const PIN_MISO = PIN_P19 + export const PIN_MOSI = PIN_P23 + export const PIN_SCK = PIN_P18 + export const PIN_SCL = PIN_P22 + export const PIN_SDA = PIN_P21 + + export const PIN_LED = PIN_P2 +} diff --git a/libs/espressif-esp32-devkit-c/device.d.ts b/libs/espressif-esp32-devkit-c/device.d.ts new file mode 100644 index 00000000..dc07a97a --- /dev/null +++ b/libs/espressif-esp32-devkit-c/device.d.ts @@ -0,0 +1,77 @@ +declare namespace pins { + //% fixedInstance shim=pxt::getPin(PIN_LED) + const LED: PwmOnlyPin; + + //% fixedInstance shim=pxt::getPin(PIN_P36) + const VP: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P39) + const VN: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P34) + const P34: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P35) + const P35: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P32) + const P32: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P33) + const P33: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P25) + const P25: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P26) + const P26: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P27) + const P27: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P14) + const P14: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P12) + const P12: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P13) + const P13: PwmPin; + + // flash: 9, 10, 11, 6, 7, 8 pins not exposed + + //% fixedInstance shim=pxt::getPin(PIN_P23) + const P23: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P22) + const P22: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P1) + const P1: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P3) + const P3: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P21) + const P21: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P19) + const P19: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P18) + const P18: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P5) + const P5: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P17) + const P17: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P16) + const P16: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P4) + const P4: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P0) + const P0: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P2) + const P2: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_P15) + const P15: PwmPin; + + //% fixedInstance shim=pxt::getPin(PIN_TX) + const TX: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_RX) + const RX: PwmPin; + + //% fixedInstance shim=pxt::getPin(PIN_MISO) + const MISO: DigitalInOutPin; + //% fixedInstance shim=pxt::getPin(PIN_MOSI) + const MOSI: DigitalInOutPin; + //% fixedInstance shim=pxt::getPin(PIN_SCK) + const SCK: DigitalInOutPin; + //% fixedInstance shim=pxt::getPin(PIN_SCL) + const SCL: DigitalInOutPin; + //% fixedInstance shim=pxt::getPin(PIN_SDA) + const SDA: DigitalInOutPin; +} + diff --git a/libs/espressif-esp32-devkit-c/pxt.json b/libs/espressif-esp32-devkit-c/pxt.json new file mode 100644 index 00000000..eba522fc --- /dev/null +++ b/libs/espressif-esp32-devkit-c/pxt.json @@ -0,0 +1,25 @@ +{ + "name": "espressif-esp32-devkit-c", + "description": "Support for Espressif ESP32-DevKitC", + "files": [ + "README.md", + "device.d.ts", + "config.ts", + "board.json", + "board.svg" + ], + "core": true, + "compileServiceVariant": "esp32", + "dependencies": { + "core---esp32": "file:../core---esp32", + "settings---esp32": "file:../settings---esp32", + "wifi---esp32": "file:../wifi---esp32" + }, + "public": true, + "features": [ + "pinled", + "pind0", + "pind1", + "jacdac" + ] +} diff --git a/libs/jacdac-iot-s2/README.md b/libs/jacdac-iot-s2/README.md new file mode 100644 index 00000000..b16dcc0a --- /dev/null +++ b/libs/jacdac-iot-s2/README.md @@ -0,0 +1,4 @@ +# Espressif + +The esp32 library. + diff --git a/libs/jacdac-iot-s2/board.json b/libs/jacdac-iot-s2/board.json new file mode 100644 index 00000000..9fd4afe2 --- /dev/null +++ b/libs/jacdac-iot-s2/board.json @@ -0,0 +1,376 @@ +{ + "driveDisplayName": "", + "visual": { + "image": "pkg://board.svg", + "useCrocClips": false, + "width": 325, + "height": 163, + "pinDist": 15, + "pinBlocks": [ + { + "x": 281.54592278455226, + "y": 5.286999757717413, + "labels": [ + "_3V" + ] + }, + { + "x": 266.6081685923919, + "y": 5.286999757717413, + "labels": [ + "EN" + ] + }, + { + "x": 251.67041440023158, + "y": 5.286999757717413, + "labels": [ + "VP" + ] + }, + { + "x": 236.73269650528218, + "y": 5.286999757717413, + "labels": [ + "VN" + ] + }, + { + "x": 221.7949786103328, + "y": 5.286999757717413, + "labels": [ + "P34" + ] + }, + { + "x": 206.85820444286796, + "y": 5.286999757717413, + "labels": [ + "P35" + ] + }, + { + "x": 191.9204683993131, + "y": 5.286999757717413, + "labels": [ + "P32" + ] + }, + { + "x": 176.9827505043637, + "y": 5.286999757717413, + "labels": [ + "P33" + ] + }, + { + "x": 162.04501446080883, + "y": 5.286999757717413, + "labels": [ + "P25" + ] + }, + { + "x": 147.1072602686485, + "y": 5.286999757717413, + "labels": [ + "P26" + ] + }, + { + "x": 132.16952422509362, + "y": 5.286999757717413, + "labels": [ + "P27" + ] + }, + { + "x": 117.23178818153876, + "y": 5.286999757717413, + "labels": [ + "P14" + ] + }, + { + "x": 102.29407028658937, + "y": 5.286999757717413, + "labels": [ + "P12" + ] + }, + { + "x": 87.35631609442903, + "y": 5.286999757717413, + "labels": [ + "GND" + ] + }, + { + "x": 72.41957822417514, + "y": 5.286999757717413, + "labels": [ + "P13" + ] + }, + { + "x": 57.48186032922575, + "y": 5.286999757717413, + "labels": [ + "D2" + ] + }, + { + "x": 42.54411521136815, + "y": 5.286999757717413, + "labels": [ + "D3" + ] + }, + { + "x": 27.606379167813287, + "y": 5.286999757717413, + "labels": [ + "CMD" + ] + }, + { + "x": 12.66864312425842, + "y": 5.286999757717413, + "labels": [ + "_5V" + ] + }, + { + "x": 281.8268994944748, + "y": 154.50397984778954, + "labels": [ + "GND3" + ] + }, + { + "x": 266.88914530231443, + "y": 154.50397984778954, + "labels": [ + "P23" + ] + }, + { + "x": 251.95142740736503, + "y": 154.50397984778954, + "labels": [ + "P22" + ] + }, + { + "x": 237.0136732152047, + "y": 154.50397984778954, + "labels": [ + "TX" + ] + }, + { + "x": 222.07591902304438, + "y": 154.50397984778954, + "labels": [ + "RX" + ] + }, + { + "x": 207.13821927670045, + "y": 154.50397984778954, + "labels": [ + "P21" + ] + }, + { + "x": 192.20146325784108, + "y": 154.50397984778954, + "labels": [ + "GND2" + ] + }, + { + "x": 177.26372721428623, + "y": 154.50397984778954, + "labels": [ + "P19" + ] + }, + { + "x": 162.32600931933683, + "y": 154.50397984778954, + "labels": [ + "P18" + ] + }, + { + "x": 147.38827327578196, + "y": 154.50397984778954, + "labels": [ + "P5" + ] + }, + { + "x": 132.45051908362163, + "y": 154.50397984778954, + "labels": [ + "P17" + ] + }, + { + "x": 117.51278304006675, + "y": 154.50397984778954, + "labels": [ + "P16" + ] + }, + { + "x": 102.57504699651189, + "y": 154.50397984778954, + "labels": [ + "P4" + ] + }, + { + "x": 87.63731095295702, + "y": 154.50397984778954, + "labels": [ + "P0" + ] + }, + { + "x": 72.69957490940216, + "y": 154.50397984778954, + "labels": [ + "P2" + ] + }, + { + "x": 57.76283703914827, + "y": 154.50397984778954, + "labels": [ + "P15" + ] + }, + { + "x": 42.82511006989614, + "y": 154.50397984778954, + "labels": [ + "D1" + ] + }, + { + "x": 27.887374026341277, + "y": 154.50397984778954, + "labels": [ + "D0" + ] + }, + { + "x": 12.94963798278641, + "y": 154.50397984778954, + "labels": [ + "CLK" + ] + }, + { + "x": 16.661572260040813, + "y": 26.173999092331044, + "labels": [ + "BTN_RESET" + ] + } + ], + "leds": [ + { + "x": 79.80546174743039, + "y": 33.66799892398028, + "w": 7.4058651378802605, + "h": 5.122007876856312, + "color": "#ff0000", + "label": "LED" + } + ], + "touchPads": [], + "buttons": [ + { + "x": 16.661572260040813, + "y": 120.33202156315024, + "w": 24.02557763939916, + "h": 16.885977984351396, + "label": "BTN_BOOT" + } + ] + }, + "gpioPinMap": { + "_3V": "_3V", + "": "_5V", + "3V": "_3V", + "EN": "EN", + "VP": "VP", + "VN": "VN", + "P34": "P34", + "P35": "P35", + "P32": "P32", + "P33": "P33", + "P25": "P25", + "P26": "P26", + "P27": "P27", + "P14": "P14", + "P12": "P12", + "GND": "GND", + "P13": "P13", + "D2": "D2", + "D3": "D3", + "CMD": "CMD", + "_5V": "_5V", + "5V": "_5V", + "GND3": "GND3", + "P23": "P23", + "P22": "P22", + "TX": "TX", + "RX": "RX", + "P21": "P21", + "GND2": "GND2", + "P19": "P19", + "P18": "P18", + "P5": "P5", + "P17": "P17", + "P16": "P16", + "P4": "P4", + "P0": "P0", + "P2": "P2", + "P15": "P15", + "D1": "D1", + "D0": "D0", + "CLK": "CLK", + "BTN_RESET": "BTN_RESET", + "BTN": "BTN_BOOT", + "RESET": "BTN_RESET", + "BTN_BOOT": "BTN_BOOT", + "BOOT": "BTN_BOOT", + "LED": "LED" + }, + "groundPins": [ + "GND", + "GND3", + "GND2" + ], + "threeVoltPins": [ + "_3V" + ], + "fiveVoltPins": [ + "_5V" + ], + "i2cPins": { + "SDA": "SDA", + "SCL": "SCL" + }, + "onboardComponents": [], + "marginWhenBreadboarding": [ + 0, + 0, + 80, + 0 + ] +} \ No newline at end of file diff --git a/libs/jacdac-iot-s2/board.svg b/libs/jacdac-iot-s2/board.svg new file mode 100644 index 00000000..64d4383d --- /dev/null +++ b/libs/jacdac-iot-s2/board.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libs/jacdac-iot-s2/boardhd.svg b/libs/jacdac-iot-s2/boardhd.svg new file mode 100644 index 00000000..68399fe2 --- /dev/null +++ b/libs/jacdac-iot-s2/boardhd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libs/jacdac-iot-s2/config.ts b/libs/jacdac-iot-s2/config.ts new file mode 100644 index 00000000..87e6c295 --- /dev/null +++ b/libs/jacdac-iot-s2/config.ts @@ -0,0 +1,51 @@ +namespace config { + export const PIN_P0 = 0 + export const PIN_P1 = 1 + export const PIN_P2 = 2 + export const PIN_P3 = 3 + export const PIN_P4 = 4 + export const PIN_P5 = 5 + export const PIN_P12 = 12 + export const PIN_P13 = 13 + export const PIN_P14 = 14 + export const PIN_P15 = 15 + export const PIN_P16 = 16 + export const PIN_P17 = 17 + export const PIN_P18 = 18 + export const PIN_P19 = 19 + export const PIN_P21 = 21 + export const PIN_P22 = 22 + export const PIN_P23 = 23 + export const PIN_P25 = 25 + export const PIN_P26 = 26 + export const PIN_P27 = 27 + /* + export const PIN_P32 = 32 + export const PIN_P33 = 33 + export const PIN_P34 = 34 + export const PIN_P35 = 35 + export const PIN_P36 = 36 + export const PIN_P39 = 39 + export const PIN_P40 = 40 + export const PIN_P41 = 41 + export const PIN_P42 = 42 + export const PIN_P43 = 43 + export const PIN_P44 = 44 + export const PIN_P45 = 45 + export const PIN_P46 = 46 + */ + + export const PIN_JACK_TX = PIN_P17 + + export const PIN_LED_R = 8 + export const PIN_LED_G = 7 + export const PIN_LED_B = 6 + export const PIN_LED = PIN_LED_G + + export const PIN_JDPWR_OVERLOAD_LED = PIN_LED_R | DAL.CFG_PIN_CONFIG_ACTIVE_LO + export const PIN_JDPWR_ENABLE = PIN_P2 | DAL.CFG_PIN_CONFIG_ACTIVE_LO + export const PIN_JDPWR_FAULT = PIN_P13 + + // PIN_P3 is for 500/900mA switch + +} diff --git a/libs/jacdac-iot-s2/device.d.ts b/libs/jacdac-iot-s2/device.d.ts new file mode 100644 index 00000000..66912b81 --- /dev/null +++ b/libs/jacdac-iot-s2/device.d.ts @@ -0,0 +1,13 @@ +declare namespace pins { + //% fixedInstance shim=pxt::getPin(PIN_LED) + const LED: PwmOnlyPin; + + //% fixedInstance shim=pxt::getPin(PIN_LED_R) + const LED_R: PwmOnlyPin; + + //% fixedInstance shim=pxt::getPin(PIN_LED_G) + const LED_G: PwmOnlyPin; + + //% fixedInstance shim=pxt::getPin(PIN_LED_B) + const LED_B: PwmOnlyPin; +} diff --git a/libs/jacdac-iot-s2/pxt.json b/libs/jacdac-iot-s2/pxt.json new file mode 100644 index 00000000..c04a307b --- /dev/null +++ b/libs/jacdac-iot-s2/pxt.json @@ -0,0 +1,23 @@ +{ + "name": "jacdac-iot-s2", + "description": "Support for MSR Jacdac IoT 48 (ESP32-S2)", + "files": [ + "README.md", + "board.json", + "board.svg", + "config.ts", + "device.d.ts" + ], + "core": true, + "compileServiceVariant": "esp32s2", + "dependencies": { + "core---esp32s2": "file:../core---esp32s2", + "settings---esp32": "file:../settings---esp32", + "wifi---esp32": "file:../wifi---esp32" + }, + "public": true, + "features": [ + "pinled", + "jacdac" + ] +} diff --git a/libs/settings---esp32/pxt.json b/libs/settings---esp32/pxt.json new file mode 100644 index 00000000..b8f748f6 --- /dev/null +++ b/libs/settings---esp32/pxt.json @@ -0,0 +1,3 @@ +{ + "additionalFilePath": "../../node_modules/pxt-common-packages/libs/settings---esp32" +} diff --git a/libs/wifi---esp32/enums.d.ts b/libs/wifi---esp32/enums.d.ts new file mode 100644 index 00000000..3f9fefc8 --- /dev/null +++ b/libs/wifi---esp32/enums.d.ts @@ -0,0 +1,13 @@ +// Auto-generated. Do not edit. + + + declare const enum WifiEvent { + //% + ScanDone = 1, + //% + GotIP = 2, + //% + Disconnected = 3, + } + +// Auto-generated. Do not edit. Really. diff --git a/libs/wifi---esp32/pxt.json b/libs/wifi---esp32/pxt.json new file mode 100644 index 00000000..7ddc09c0 --- /dev/null +++ b/libs/wifi---esp32/pxt.json @@ -0,0 +1,3 @@ +{ + "additionalFilePath": "../../node_modules/pxt-common-packages/libs/wifi---esp32" +} diff --git a/libs/wifi---esp32/shims.d.ts b/libs/wifi---esp32/shims.d.ts new file mode 100644 index 00000000..81055d94 --- /dev/null +++ b/libs/wifi---esp32/shims.d.ts @@ -0,0 +1,55 @@ +// Auto-generated. Do not edit. +declare namespace _wifi { + + /** Allocate new socket. */ + //% shim=_wifi::socketAlloc + function socketAlloc(): int32; + + /** Connect with TLS */ + //% shim=_wifi::socketConnectTLS + function socketConnectTLS(fd: int32, host: string, port: int32): int32; + + /** Write to socket */ + //% shim=_wifi::socketWrite + function socketWrite(fd: int32, data: Buffer): int32; + + /** Read from a socket; the return type is really number|Buffer */ + //% shim=_wifi::socketRead + function socketRead(fd: int32, size: int32): int32; + + /** See how many bytes are available for reading */ + //% shim=_wifi::socketBytesAvailable + function socketBytesAvailable(fd: int32): int32; + + /** Close the socket if open */ + //% shim=_wifi::socketClose + function socketClose(fd: int32): int32; +} +declare namespace _wifi { + + /** Get ID used in events. */ + //% shim=_wifi::eventID + function eventID(): int32; + + /** Start a WiFi network scan. */ + //% shim=_wifi::scanStart + function scanStart(): void; + + /** Get the results of the scan if any. */ + //% shim=_wifi::scanResults + function scanResults(): Buffer; + + /** Initiate connection. */ + //% shim=_wifi::connect + function connect(ssid: string, pass: string): int32; + + /** Initiate disconnection. */ + //% shim=_wifi::disconnect + function disconnect(): int32; + + /** Check if connected. */ + //% shim=_wifi::isConnected + function isConnected(): boolean; +} + +// Auto-generated. Do not edit. Really. diff --git a/package.json b/package.json index 3d3eebf8..e13b8d70 100644 --- a/package.json +++ b/package.json @@ -44,8 +44,8 @@ "typescript": "3.7.5" }, "dependencies": { - "pxt-common-packages": "8.9.14", - "pxt-core": "6.13.55", + "pxt-common-packages": "9.1.3", + "pxt-core": "7.1.14", "webusb": "^1.1.1" }, "scripts": { diff --git a/pxtarget.json b/pxtarget.json index d63e20bf..7eb4d80a 100644 --- a/pxtarget.json +++ b/pxtarget.json @@ -14,6 +14,8 @@ "libs/core---nrf52", "libs/core---samd", "libs/core---samd51", + "libs/core---esp32", + "libs/core---esp32s2", "libs/screen---st7735", "libs/pulse", "libs/infrared", @@ -54,9 +56,11 @@ "libs/esp32", "libs/net", "libs/net-game", + "libs/wifi---esp32", "libs/mqtt", "libs/azureiot", "libs/settings", + "libs/settings---esp32", "libs/settings---files", "libs/radio", "libs/radio-broadcast", @@ -93,7 +97,9 @@ "libs/brain-nrf52840", "libs/stitchkit", "libs/machachi", - "libs/microsoft-makeable" + "libs/microsoft-makeable", + "libs/espressif-esp32-devkit-c", + "libs/jacdac-iot-s2" ], "serial": { "useHF2": true, @@ -351,6 +357,41 @@ "dockerImage": "pext/yotta:latest", "codalBinary": "CIRCUIT_PLAYGROUND" } + }, + "esp32": { + "compile": { + "hasHex": true, + "useESP": true, + "useUF2": false, + "flashCodeAlign": 256, + "webUSB": false, + "nativeType": "vm", + "stackAlign": 2 + }, + "compileService": { + "buildEngine": "dockerespidf", + "dockerImage": "pext/esp:latest", + "dockerArgs": [], + "serviceId": "espidf" + } + }, + "esp32s2": { + "compile": { + "hasHex": true, + "useESP": true, + "useUF2": true, + "flashCodeAlign": 256, + "webUSB": false, + "nativeType": "vm", + "uf2Family": "0xbfdd4eee", + "stackAlign": 2 + }, + "compileService": { + "buildEngine": "dockerespidf", + "dockerImage": "pext/esp:latest", + "dockerArgs": [], + "serviceId": "espidf" + } } }, "appTheme": {