Compare commits

...

3 Commits

Author SHA1 Message Date
Ken Van Hoeylandt
dddca1ea76
Generate commit hash and timestamp for CDN (#415) 2025-11-14 00:23:25 +01:00
Ken Van Hoeylandt
c1ff024657
Rename Boards/ to Devices/ (#414) 2025-11-13 23:50:43 +01:00
Shadowtrance
c7c9618f48
Waveshare GEEK (#413) 2025-11-13 22:32:02 +01:00
315 changed files with 365 additions and 136 deletions

View File

@ -15,6 +15,7 @@ jobs:
strategy:
matrix:
board: [
{ id: btt-panda-touch, arch: esp32s3 },
{ id: cyd-2432s024c, arch: esp32 },
{ id: cyd-2432s028r, arch: esp32 },
{ id: cyd-2432s028rv3, arch: esp32 },
@ -44,11 +45,11 @@ jobs:
{ id: m5stack-stickc-plus, arch: esp32 },
{ id: m5stack-stickc-plus2, arch: esp32 },
{ id: unphone, arch: esp32s3 },
{ id: waveshare-s3-touch-lcd-43, arch: esp32s3 },
{ id: waveshare-s3-touch-lcd-147, arch: esp32s3 },
{ id: waveshare-s3-touch-lcd-128, arch: esp32s3 },
{ id: waveshare-esp32-s3-geek, arch: esp32s3 },
{ id: waveshare-s3-lcd-13, arch: esp32s3 },
{ id: btt-panda-touch, arch: esp32s3 }
{ id: waveshare-s3-touch-lcd-128, arch: esp32s3 },
{ id: waveshare-s3-touch-lcd-147, arch: esp32s3 },
{ id: waveshare-s3-touch-lcd-43, arch: esp32s3 }
]
runs-on: ubuntu-latest
steps:

View File

@ -1,13 +1,15 @@
import subprocess
from datetime import datetime, UTC
import os
import sys
import configparser
from dataclasses import dataclass, asdict
import json
import shutil
from configparser import ConfigParser, RawConfigParser
from configparser import RawConfigParser
VERBOSE = False
DEVICES_FOLDER = "Boards"
DEVICES_FOLDER = "Devices"
@dataclass
class IndexEntry:
@ -39,6 +41,8 @@ class ManifestBuildPart:
@dataclass
class DeviceIndex:
version: str
created: str
gitCommit: str
devices: list
if sys.platform == "win32":
@ -174,6 +178,10 @@ def process_device(in_path: str, out_path: str, device_directory: str, device_id
with open(json_manifest_path, 'w') as json_manifest_file:
json.dump(asdict(manifest), json_manifest_file, indent=2)
def get_git_commit_hash():
return subprocess.check_output(['git', 'rev-parse', 'HEAD']).decode('ascii').strip()
def main(in_path: str, out_path: str, version: str):
if not os.path.exists(in_path):
exit_with_error(f"Input path not found: {in_path}")
@ -181,7 +189,12 @@ def main(in_path: str, out_path: str, version: str):
shutil.rmtree(out_path)
os.mkdir(out_path)
device_directories = os.listdir(in_path)
device_index = DeviceIndex(version, [])
device_index = DeviceIndex(
version=version,
created=datetime.now(UTC).strftime('%Y-%m-%dT%H:%M:%S'),
gitCommit=get_git_commit_hash(),
devices=[]
)
for device_directory in device_directories:
if device_directory.endswith("-symbols"):
continue
@ -219,4 +232,4 @@ if __name__ == "__main__":
if "--verbose" in sys.argv:
VERBOSE = True
sys.argv.remove("--verbose")
main(in_path=sys.argv[1], out_path=sys.argv[2], version=sys.argv[3])
main(in_path=sys.argv[1], out_path=sys.argv[2], version=sys.argv[3])

View File

@ -1,30 +0,0 @@
if (NOT WIN32)
string(ASCII 27 Esc)
set(ColorReset "${Esc}[m")
set(Cyan "${Esc}[36m")
else ()
set(ColorReset "")
set(Cyan "")
endif ()
function(INIT_TACTILITY_GLOBALS SDKCONFIG_FILE)
get_filename_component(SDKCONFIG_FILE_ABS ${SDKCONFIG_FILE} ABSOLUTE)
# Find the board identifier in the sdkconfig file
if (NOT EXISTS ${SDKCONFIG_FILE_ABS})
message(FATAL_ERROR "sdkconfig file not found:\nMake sure you select a device by running \"python device.py [device-id]\"\n")
endif ()
file(READ ${SDKCONFIG_FILE_ABS} sdkconfig_text)
string(REGEX MATCH "(CONFIG_TT_BOARD_ID\=\"[a-z0-9_\-]*\")" sdkconfig_board_id "${sdkconfig_text}")
if (sdkconfig_board_id STREQUAL "")
message(FATAL_ERROR "CONFIG_TT_BOARD_ID not found in sdkconfig:\nMake sure you select a device with 'python device.py device-id'")
endif ()
string(LENGTH ${sdkconfig_board_id} sdkconfig_board_id_length)
set(id_length 0)
math(EXPR id_length "${sdkconfig_board_id_length} - 21")
string(SUBSTRING ${sdkconfig_board_id} 20 ${id_length} board_id)
message("Board name: ${Cyan}${board_id}${ColorReset}")
set(TACTILITY_BOARD_PROJECT ${board_id})
message("Board path: ${Cyan}Boards/${TACTILITY_BOARD_PROJECT}${ColorReset}\n")
set_property(GLOBAL PROPERTY TACTILITY_BOARD_PROJECT ${TACTILITY_BOARD_PROJECT})
set_property(GLOBAL PROPERTY TACTILITY_BOARD_ID ${board_id})
endfunction()

32
Buildscripts/device.cmake Normal file
View File

@ -0,0 +1,32 @@
if (NOT WIN32)
string(ASCII 27 Esc)
set(ColorReset "${Esc}[m")
set(Cyan "${Esc}[36m")
else ()
set(ColorReset "")
set(Cyan "")
endif ()
function(INIT_TACTILITY_GLOBALS SDKCONFIG_FILE)
get_filename_component(SDKCONFIG_FILE_ABS ${SDKCONFIG_FILE} ABSOLUTE)
# Find the device identifier in the sdkconfig file
if (NOT EXISTS ${SDKCONFIG_FILE_ABS})
message(FATAL_ERROR "sdkconfig file not found:\nMake sure you select a device by running \"python device.py [device-id]\"\n")
endif ()
file(READ ${SDKCONFIG_FILE_ABS} sdkconfig_text)
string(REGEX MATCH "(CONFIG_TT_DEVICE_ID\=\"[a-z0-9_\-]*\")" sdkconfig_device_id "${sdkconfig_text}")
if (sdkconfig_device_id STREQUAL "CONFIG_TT_DEVICE_ID=\"\"" OR sdkconfig_device_id STREQUAL "")
message(FATAL_ERROR "CONFIG_TT_DEVICE_ID not found in sdkconfig:\nMake sure you select a device with 'python device.py device-id'")
endif ()
string(LENGTH ${sdkconfig_device_id} sdkconfig_device_id_length)
set(id_length 0)
# Total length minus chars of 'CONFIG_TT_DEVICE_ID=""'
math(EXPR id_length "${sdkconfig_device_id_length} - 22")
# Skip 'CONFIG_TT_DEVICE_ID="' then read the relevant (remaining) chars
string(SUBSTRING ${sdkconfig_device_id} 21 ${id_length} device_id)
message("Device identifier: ${Cyan}${device_id}${ColorReset}")
set(TACTILITY_DEVICE_PROJECT ${device_id})
message("Device project path: ${Cyan}Devices/${TACTILITY_DEVICE_PROJECT}${ColorReset}\n")
set_property(GLOBAL PROPERTY TACTILITY_DEVICE_PROJECT ${TACTILITY_DEVICE_PROJECT})
set_property(GLOBAL PROPERTY TACTILITY_DEVICE_ID ${device_id})
endfunction()

View File

@ -24,15 +24,15 @@ if (DEFINED ENV{ESP_IDF_VERSION})
message("Using ESP-IDF ${Cyan}v$ENV{ESP_IDF_VERSION}${ColorReset}")
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
include("Buildscripts/board.cmake")
include("Buildscripts/device.cmake")
init_tactility_globals("sdkconfig")
get_property(TACTILITY_BOARD_PROJECT GLOBAL PROPERTY TACTILITY_BOARD_PROJECT)
get_property(TACTILITY_DEVICE_PROJECT GLOBAL PROPERTY TACTILITY_DEVICE_PROJECT)
set(COMPONENTS Firmware)
set(EXTRA_COMPONENT_DIRS
"Firmware"
"Boards/${TACTILITY_BOARD_PROJECT}"
"Devices/${TACTILITY_DEVICE_PROJECT}"
"Drivers"
"Tactility"
"TactilityC"
@ -60,8 +60,8 @@ if (DEFINED ENV{ESP_IDF_VERSION})
else ()
message("Building for sim target")
add_compile_definitions(CONFIG_TT_BOARD_ID="simulator")
add_compile_definitions(CONFIG_TT_BOARD_NAME="Simulator")
add_compile_definitions(CONFIG_TT_DEVICE_ID="simulator")
add_compile_definitions(CONFIG_TT_DEVICE_NAME="Simulator")
endif ()
project(Tactility)
@ -70,12 +70,12 @@ project(Tactility)
if (NOT DEFINED ENV{ESP_IDF_VERSION})
add_subdirectory(Tactility)
add_subdirectory(TactilityCore)
add_subdirectory(Boards/simulator)
add_subdirectory(Devices/simulator)
endif ()
if (NOT DEFINED ENV{ESP_IDF_VERSION})
# FreeRTOS
set(FREERTOS_CONFIG_FILE_DIRECTORY ${PROJECT_SOURCE_DIR}/Boards/simulator/Source CACHE STRING "")
set(FREERTOS_CONFIG_FILE_DIRECTORY ${PROJECT_SOURCE_DIR}/Devices/simulator/Source CACHE STRING "")
set(FREERTOS_PORT GCC_POSIX CACHE STRING "")
add_subdirectory(Libraries/cJSON)
@ -86,7 +86,7 @@ if (NOT DEFINED ENV{ESP_IDF_VERSION})
add_subdirectory(Libraries/minmea)
target_compile_definitions(freertos_kernel PUBLIC "projCOVERAGE_TEST=0")
target_include_directories(freertos_kernel
PUBLIC Boards/simulator/Source # for FreeRTOSConfig.h
PUBLIC Devices/Simulator/Source # for FreeRTOSConfig.h
)
# EmbedTLS

Some files were not shown because too many files have changed in this diff Show More