├── .gitignore ├── .gitmodules ├── .vscode ├── c_cpp_properties.json ├── launch.json └── tasks.json ├── LICENSE.md ├── Makefile ├── README.md ├── docs ├── diagrams │ ├── camera-jpeg-encoder-architecture-2.drawio.png │ ├── camera-jpeg-encoder-architecture.drawio.png │ ├── camera-pipeline-architecture.drawio.png │ ├── fpga-architecture.drawio.png │ ├── frame-system-architecture.drawio.png │ ├── graphics-color-palette.drawio.png │ ├── graphics-pipeline-architecture.drawio.png │ ├── graphics-sprite-engine.drawio.png │ └── graphics-vector-engine.drawio.png ├── fpga-architecture.md └── fpga-toolchain-setup.md ├── libraries ├── littlefs │ ├── LICENSE.md │ ├── VERSION.md │ ├── lfs.c │ ├── lfs.h │ ├── lfs_util.c │ └── lfs_util.h ├── lua │ ├── lapi.c │ ├── lapi.h │ ├── lauxlib.c │ ├── lauxlib.h │ ├── lbaselib.c │ ├── lcode.c │ ├── lcode.h │ ├── lcorolib.c │ ├── lctype.c │ ├── lctype.h │ ├── ldblib.c │ ├── ldebug.c │ ├── ldebug.h │ ├── ldo.c │ ├── ldo.h │ ├── ldump.c │ ├── lfunc.c │ ├── lfunc.h │ ├── lgc.c │ ├── lgc.h │ ├── linit.c │ ├── liolib.c │ ├── ljumptab.h │ ├── llex.c │ ├── llex.h │ ├── llimits.h │ ├── lmathlib.c │ ├── lmem.c │ ├── lmem.h │ ├── loadlib.c │ ├── lobject.c │ ├── lobject.h │ ├── lopcodes.c │ ├── lopcodes.h │ ├── lopnames.h │ ├── loslib.c │ ├── lparser.c │ ├── lparser.h │ ├── lprefix.h │ ├── lstate.c │ ├── lstate.h │ ├── lstring.c │ ├── lstring.h │ ├── lstrlib.c │ ├── ltable.c │ ├── ltable.h │ ├── ltablib.c │ ├── ltm.c │ ├── ltm.h │ ├── lua.h │ ├── luaconf.h │ ├── lualib.h │ ├── lundump.c │ ├── lundump.h │ ├── lutf8lib.c │ ├── lvm.c │ ├── lvm.h │ ├── lzio.c │ └── lzio.h ├── lz4 │ ├── LICENSE │ ├── lz4.c │ └── lz4.h ├── nrf5sdk │ ├── atomic │ │ ├── nrf_atomic.c │ │ ├── nrf_atomic.h │ │ ├── nrf_atomic_internal.h │ │ └── nrf_atomic_sanity_check.h │ ├── atomic_fifo │ │ ├── nrf_atfifo.c │ │ ├── nrf_atfifo.h │ │ └── nrf_atfifo_internal.h │ ├── balloc │ │ ├── nrf_balloc.c │ │ └── nrf_balloc.h │ ├── ble │ │ └── common │ │ │ ├── ble_advdata.c │ │ │ ├── ble_advdata.h │ │ │ ├── ble_conn_params.c │ │ │ ├── ble_conn_params.h │ │ │ ├── ble_conn_state.c │ │ │ ├── ble_conn_state.h │ │ │ ├── ble_date_time.h │ │ │ ├── ble_gatt_db.h │ │ │ ├── ble_sensor_location.h │ │ │ ├── ble_srv_common.c │ │ │ └── ble_srv_common.h │ ├── boards │ │ ├── arduino_joystick_shield_v1a.h │ │ ├── arduino_primo.h │ │ ├── boards.c │ │ ├── boards.h │ │ ├── d52_starterkit.h │ │ ├── n5_starterkit.h │ │ ├── nrf6310.h │ │ ├── pca10000.h │ │ ├── pca10001.h │ │ ├── pca10003.h │ │ ├── pca10028.h │ │ ├── pca10031.h │ │ ├── pca10036.h │ │ ├── pca10040.h │ │ ├── pca10056.h │ │ ├── pca10059.h │ │ ├── pca10100.h │ │ ├── pca10112.h │ │ ├── pca20006.h │ │ ├── pca20020.h │ │ └── wt51822.h │ ├── bootloader │ │ ├── ant_dfu │ │ │ └── nrf_dfu_ant.c │ │ ├── ble_dfu │ │ │ ├── nrf_dfu_ble.c │ │ │ ├── nrf_dfu_ble.h │ │ │ └── nrf_dfu_ble_svci_bond_sharing.h │ │ ├── dfu │ │ │ ├── dfu-cc.options │ │ │ ├── dfu-cc.pb.c │ │ │ ├── dfu-cc.pb.h │ │ │ ├── dfu-cc.proto │ │ │ ├── nrf_dfu.c │ │ │ ├── nrf_dfu.h │ │ │ ├── nrf_dfu_flash.c │ │ │ ├── nrf_dfu_flash.h │ │ │ ├── nrf_dfu_handling_error.c │ │ │ ├── nrf_dfu_handling_error.h │ │ │ ├── nrf_dfu_mbr.c │ │ │ ├── nrf_dfu_mbr.h │ │ │ ├── nrf_dfu_req_handler.c │ │ │ ├── nrf_dfu_req_handler.h │ │ │ ├── nrf_dfu_settings.c │ │ │ ├── nrf_dfu_settings.h │ │ │ ├── nrf_dfu_settings_svci.c │ │ │ ├── nrf_dfu_svci.c │ │ │ ├── nrf_dfu_svci_handler.c │ │ │ ├── nrf_dfu_transport.c │ │ │ ├── nrf_dfu_transport.h │ │ │ ├── nrf_dfu_trigger_usb.c │ │ │ ├── nrf_dfu_trigger_usb.h │ │ │ ├── nrf_dfu_types.h │ │ │ ├── nrf_dfu_utils.c │ │ │ ├── nrf_dfu_utils.h │ │ │ ├── nrf_dfu_validation.c │ │ │ ├── nrf_dfu_validation.h │ │ │ ├── nrf_dfu_ver_validation.c │ │ │ └── nrf_dfu_ver_validation.h │ │ ├── nrf_bootloader.c │ │ ├── nrf_bootloader.h │ │ ├── nrf_bootloader_app_start.c │ │ ├── nrf_bootloader_app_start.h │ │ ├── nrf_bootloader_app_start_final.c │ │ ├── nrf_bootloader_dfu_timers.c │ │ ├── nrf_bootloader_dfu_timers.h │ │ ├── nrf_bootloader_fw_activation.c │ │ ├── nrf_bootloader_fw_activation.h │ │ ├── nrf_bootloader_info.c │ │ ├── nrf_bootloader_info.h │ │ ├── nrf_bootloader_wdt.c │ │ ├── nrf_bootloader_wdt.h │ │ └── serial_dfu │ │ │ ├── nrf_dfu_serial.c │ │ │ ├── nrf_dfu_serial.h │ │ │ ├── nrf_dfu_serial_uart.c │ │ │ └── nrf_dfu_serial_usb.c │ ├── crc32 │ │ ├── crc32.c │ │ └── crc32.h │ ├── crypto │ │ ├── backend │ │ │ ├── cc310 │ │ │ │ ├── cc310_backend_aes.c │ │ │ │ ├── cc310_backend_aes.h │ │ │ │ ├── cc310_backend_aes_aead.c │ │ │ │ ├── cc310_backend_aes_aead.h │ │ │ │ ├── cc310_backend_chacha_poly_aead.c │ │ │ │ ├── cc310_backend_chacha_poly_aead.h │ │ │ │ ├── cc310_backend_ecc.c │ │ │ │ ├── cc310_backend_ecc.h │ │ │ │ ├── cc310_backend_ecdh.c │ │ │ │ ├── cc310_backend_ecdh.h │ │ │ │ ├── cc310_backend_ecdsa.c │ │ │ │ ├── cc310_backend_ecdsa.h │ │ │ │ ├── cc310_backend_eddsa.c │ │ │ │ ├── cc310_backend_eddsa.h │ │ │ │ ├── cc310_backend_hash.c │ │ │ │ ├── cc310_backend_hash.h │ │ │ │ ├── cc310_backend_hmac.c │ │ │ │ ├── cc310_backend_hmac.h │ │ │ │ ├── cc310_backend_init.c │ │ │ │ ├── cc310_backend_mutex.c │ │ │ │ ├── cc310_backend_mutex.h │ │ │ │ ├── cc310_backend_rng.c │ │ │ │ ├── cc310_backend_rng.h │ │ │ │ ├── cc310_backend_shared.c │ │ │ │ └── cc310_backend_shared.h │ │ │ ├── cc310_bl │ │ │ │ ├── cc310_bl_backend_ecc.c │ │ │ │ ├── cc310_bl_backend_ecc.h │ │ │ │ ├── cc310_bl_backend_ecdh.h │ │ │ │ ├── cc310_bl_backend_ecdsa.c │ │ │ │ ├── cc310_bl_backend_ecdsa.h │ │ │ │ ├── cc310_bl_backend_hash.c │ │ │ │ ├── cc310_bl_backend_hash.h │ │ │ │ ├── cc310_bl_backend_init.c │ │ │ │ ├── cc310_bl_backend_shared.c │ │ │ │ └── cc310_bl_backend_shared.h │ │ │ ├── cifra │ │ │ │ ├── cifra_backend_aes_aead.c │ │ │ │ └── cifra_backend_aes_aead.h │ │ │ ├── mbedtls │ │ │ │ ├── mbedtls_backend_aes.c │ │ │ │ ├── mbedtls_backend_aes.h │ │ │ │ ├── mbedtls_backend_aes_aead.c │ │ │ │ ├── mbedtls_backend_aes_aead.h │ │ │ │ ├── mbedtls_backend_ecc.c │ │ │ │ ├── mbedtls_backend_ecc.h │ │ │ │ ├── mbedtls_backend_ecdh.c │ │ │ │ ├── mbedtls_backend_ecdh.h │ │ │ │ ├── mbedtls_backend_ecdsa.c │ │ │ │ ├── mbedtls_backend_ecdsa.h │ │ │ │ ├── mbedtls_backend_hash.c │ │ │ │ ├── mbedtls_backend_hash.h │ │ │ │ ├── mbedtls_backend_hmac.c │ │ │ │ ├── mbedtls_backend_hmac.h │ │ │ │ └── mbedtls_backend_init.c │ │ │ ├── micro_ecc │ │ │ │ ├── micro_ecc_backend_ecc.c │ │ │ │ ├── micro_ecc_backend_ecc.h │ │ │ │ ├── micro_ecc_backend_ecdh.c │ │ │ │ ├── micro_ecc_backend_ecdh.h │ │ │ │ ├── micro_ecc_backend_ecdsa.c │ │ │ │ ├── micro_ecc_backend_ecdsa.h │ │ │ │ └── micro_ecc_backend_shared.h │ │ │ ├── nrf_hw │ │ │ │ ├── nrf_hw_backend_init.c │ │ │ │ ├── nrf_hw_backend_rng.c │ │ │ │ ├── nrf_hw_backend_rng.h │ │ │ │ ├── nrf_hw_backend_rng_mbedtls.c │ │ │ │ └── nrf_hw_backend_rng_mbedtls.h │ │ │ ├── nrf_sw │ │ │ │ ├── nrf_sw_backend_hash.c │ │ │ │ └── nrf_sw_backend_hash.h │ │ │ ├── oberon │ │ │ │ ├── oberon_backend_chacha_poly_aead.c │ │ │ │ ├── oberon_backend_chacha_poly_aead.h │ │ │ │ ├── oberon_backend_ecc.c │ │ │ │ ├── oberon_backend_ecc.h │ │ │ │ ├── oberon_backend_ecdh.c │ │ │ │ ├── oberon_backend_ecdh.h │ │ │ │ ├── oberon_backend_ecdsa.c │ │ │ │ ├── oberon_backend_ecdsa.h │ │ │ │ ├── oberon_backend_eddsa.c │ │ │ │ ├── oberon_backend_eddsa.h │ │ │ │ ├── oberon_backend_hash.c │ │ │ │ ├── oberon_backend_hash.h │ │ │ │ ├── oberon_backend_hmac.c │ │ │ │ └── oberon_backend_hmac.h │ │ │ └── optiga │ │ │ │ ├── optiga_backend_ecc.c │ │ │ │ ├── optiga_backend_ecc.h │ │ │ │ ├── optiga_backend_ecdh.c │ │ │ │ ├── optiga_backend_ecdh.h │ │ │ │ ├── optiga_backend_ecdsa.c │ │ │ │ ├── optiga_backend_ecdsa.h │ │ │ │ ├── optiga_backend_init.c │ │ │ │ ├── optiga_backend_rng.c │ │ │ │ ├── optiga_backend_rng.h │ │ │ │ ├── optiga_backend_utils.c │ │ │ │ └── optiga_backend_utils.h │ │ ├── nrf_crypto.h │ │ ├── nrf_crypto_aead.c │ │ ├── nrf_crypto_aead.h │ │ ├── nrf_crypto_aead_backend.h │ │ ├── nrf_crypto_aead_shared.h │ │ ├── nrf_crypto_aes.c │ │ ├── nrf_crypto_aes.h │ │ ├── nrf_crypto_aes_backend.h │ │ ├── nrf_crypto_aes_shared.c │ │ ├── nrf_crypto_aes_shared.h │ │ ├── nrf_crypto_ecc.c │ │ ├── nrf_crypto_ecc.h │ │ ├── nrf_crypto_ecc_backend.h │ │ ├── nrf_crypto_ecc_shared.h │ │ ├── nrf_crypto_ecdh.c │ │ ├── nrf_crypto_ecdh.h │ │ ├── nrf_crypto_ecdh_backend.h │ │ ├── nrf_crypto_ecdh_shared.h │ │ ├── nrf_crypto_ecdsa.c │ │ ├── nrf_crypto_ecdsa.h │ │ ├── nrf_crypto_ecdsa_backend.h │ │ ├── nrf_crypto_ecdsa_shared.h │ │ ├── nrf_crypto_eddsa.c │ │ ├── nrf_crypto_eddsa.h │ │ ├── nrf_crypto_eddsa_backend.h │ │ ├── nrf_crypto_eddsa_shared.h │ │ ├── nrf_crypto_error.c │ │ ├── nrf_crypto_error.h │ │ ├── nrf_crypto_hash.c │ │ ├── nrf_crypto_hash.h │ │ ├── nrf_crypto_hash_backend.h │ │ ├── nrf_crypto_hash_shared.h │ │ ├── nrf_crypto_hkdf.c │ │ ├── nrf_crypto_hkdf.h │ │ ├── nrf_crypto_hmac.c │ │ ├── nrf_crypto_hmac.h │ │ ├── nrf_crypto_hmac_backend.h │ │ ├── nrf_crypto_hmac_shared.h │ │ ├── nrf_crypto_init.c │ │ ├── nrf_crypto_init.h │ │ ├── nrf_crypto_mem.h │ │ ├── nrf_crypto_rng.c │ │ ├── nrf_crypto_rng.h │ │ ├── nrf_crypto_rng_backend.h │ │ ├── nrf_crypto_rng_shared.h │ │ ├── nrf_crypto_shared.c │ │ ├── nrf_crypto_shared.h │ │ └── nrf_crypto_types.h │ ├── delay │ │ └── nrf_delay.h │ ├── experimental_section_vars │ │ ├── nrf_section.h │ │ ├── nrf_section_iter.c │ │ └── nrf_section_iter.h │ ├── fstorage │ │ ├── nrf_fstorage.c │ │ ├── nrf_fstorage.h │ │ ├── nrf_fstorage_nvmc.c │ │ ├── nrf_fstorage_nvmc.h │ │ ├── nrf_fstorage_sd.c │ │ └── nrf_fstorage_sd.h │ ├── hal │ │ ├── nrf_aar.h │ │ ├── nrf_acl.h │ │ ├── nrf_adc.h │ │ ├── nrf_bprot.h │ │ ├── nrf_ccm.h │ │ ├── nrf_clock.h │ │ ├── nrf_comp.h │ │ ├── nrf_dppi.h │ │ ├── nrf_ecb.c │ │ ├── nrf_ecb.h │ │ ├── nrf_egu.h │ │ ├── nrf_ficr.h │ │ ├── nrf_gpio.h │ │ ├── nrf_gpiote.h │ │ ├── nrf_i2s.h │ │ ├── nrf_kmu.h │ │ ├── nrf_lpcomp.h │ │ ├── nrf_mpu.h │ │ ├── nrf_mwu.h │ │ ├── nrf_nfct.h │ │ ├── nrf_nvmc.c │ │ ├── nrf_nvmc.h │ │ ├── nrf_pdm.h │ │ ├── nrf_power.h │ │ ├── nrf_ppi.h │ │ ├── nrf_pwm.h │ │ ├── nrf_qdec.h │ │ ├── nrf_qspi.h │ │ ├── nrf_radio.h │ │ ├── nrf_regulators.h │ │ ├── nrf_rng.h │ │ ├── nrf_rtc.h │ │ ├── nrf_saadc.h │ │ ├── nrf_spi.h │ │ ├── nrf_spim.h │ │ ├── nrf_spis.h │ │ ├── nrf_spu.h │ │ ├── nrf_systick.h │ │ ├── nrf_temp.h │ │ ├── nrf_timer.h │ │ ├── nrf_twi.h │ │ ├── nrf_twim.h │ │ ├── nrf_twis.h │ │ ├── nrf_uart.h │ │ ├── nrf_uarte.h │ │ ├── nrf_usbd.h │ │ ├── nrf_vmc.h │ │ └── nrf_wdt.h │ ├── log │ │ ├── nrf_log.h │ │ ├── nrf_log_backend_flash.h │ │ ├── nrf_log_backend_interface.h │ │ ├── nrf_log_backend_rtt.h │ │ ├── nrf_log_backend_uart.h │ │ ├── nrf_log_ctrl.h │ │ ├── nrf_log_default_backends.h │ │ ├── nrf_log_instance.h │ │ ├── nrf_log_str_formatter.h │ │ ├── nrf_log_types.h │ │ └── src │ │ │ ├── nrf_log_backend_flash.c │ │ │ ├── nrf_log_backend_rtt.c │ │ │ ├── nrf_log_backend_serial.c │ │ │ ├── nrf_log_backend_serial.h │ │ │ ├── nrf_log_backend_uart.c │ │ │ ├── nrf_log_ctrl_internal.h │ │ │ ├── nrf_log_default_backends.c │ │ │ ├── nrf_log_frontend.c │ │ │ ├── nrf_log_internal.h │ │ │ └── nrf_log_str_formatter.c │ ├── mem_manager │ │ ├── mem_manager.c │ │ └── mem_manager.h │ ├── memobj │ │ ├── nrf_memobj.c │ │ └── nrf_memobj.h │ ├── micro-ecc │ │ ├── license.txt │ │ ├── micro_ecc_lib_nrf52hf_armgcc.a │ │ └── uECC.h │ ├── mutex │ │ └── nrf_mtx.h │ ├── nano-pb │ │ ├── LICENSE.txt │ │ ├── generator │ │ │ ├── camel_case_splitter.py │ │ │ ├── nanopb_generator.py │ │ │ ├── proto │ │ │ │ ├── Makefile │ │ │ │ ├── __init__.py │ │ │ │ ├── google │ │ │ │ │ └── protobuf │ │ │ │ │ │ └── descriptor.proto │ │ │ │ ├── nanopb.proto │ │ │ │ ├── nanopb_pb2.py │ │ │ │ ├── plugin.proto │ │ │ │ └── plugin_pb2.py │ │ │ ├── protoc-gen-nanopb │ │ │ └── protoc-gen-nanopb.bat │ │ ├── pb.h │ │ ├── pb_common.c │ │ ├── pb_common.h │ │ ├── pb_decode.c │ │ ├── pb_decode.h │ │ ├── pb_encode.c │ │ └── pb_encode.h │ ├── queue │ │ ├── nrf_queue.c │ │ └── nrf_queue.h │ ├── ringbuf │ │ ├── nrf_ringbuf.c │ │ └── nrf_ringbuf.h │ ├── scheduler │ │ ├── app_scheduler.c │ │ ├── app_scheduler.h │ │ └── app_scheduler_serconn.c │ ├── sha256 │ │ ├── sha256.c │ │ └── sha256.h │ ├── softdevice │ │ └── common │ │ │ ├── nrf_sdh.c │ │ │ ├── nrf_sdh.h │ │ │ ├── nrf_sdh_ant.c │ │ │ ├── nrf_sdh_ant.h │ │ │ ├── nrf_sdh_ble.c │ │ │ ├── nrf_sdh_ble.h │ │ │ ├── nrf_sdh_freertos.c │ │ │ ├── nrf_sdh_freertos.h │ │ │ ├── nrf_sdh_soc.c │ │ │ └── nrf_sdh_soc.h │ ├── stack_info │ │ └── nrf_stack_info.h │ ├── strerror │ │ ├── nrf_strerror.c │ │ └── nrf_strerror.h │ ├── svc │ │ ├── nrf_svc_function.h │ │ ├── nrf_svc_handler.c │ │ ├── nrf_svci.h │ │ ├── nrf_svci_async_function.h │ │ └── nrf_svci_async_handler.h │ └── util │ │ ├── app_error.c │ │ ├── app_error.h │ │ ├── app_error_handler_gcc.c │ │ ├── app_error_handler_iar.c │ │ ├── app_error_handler_keil.c │ │ ├── app_error_weak.c │ │ ├── app_error_weak.h │ │ ├── app_util.h │ │ ├── app_util_bds.h │ │ ├── app_util_platform.c │ │ ├── app_util_platform.h │ │ ├── nordic_common.h │ │ ├── nrf_assert.c │ │ ├── nrf_assert.h │ │ ├── nrf_bitmask.h │ │ ├── sdk_alloca.h │ │ ├── sdk_common.h │ │ ├── sdk_errors.h │ │ ├── sdk_macros.h │ │ ├── sdk_mapped_flags.c │ │ ├── sdk_mapped_flags.h │ │ ├── sdk_os.h │ │ └── sdk_resources.h ├── picolibc │ ├── _ansi.h │ ├── _syslist.h │ ├── alloca.h │ ├── ar.h │ ├── argz.h │ ├── arpa │ │ └── inet.h │ ├── assert.h │ ├── bits │ │ └── types │ │ │ └── mbstate_t.h │ ├── byteswap.h │ ├── complex.h │ ├── cpio.h │ ├── crt0-hosted.o │ ├── crt0.o │ ├── ctype.h │ ├── devctl.h │ ├── dirent.h │ ├── elf.h │ ├── endian.h │ ├── envlock.h │ ├── envz.h │ ├── errno.h │ ├── fastmath.h │ ├── fcntl.h │ ├── fenv.h │ ├── fnmatch.h │ ├── getopt.h │ ├── glob.h │ ├── grp.h │ ├── iconv.h │ ├── ieeefp.h │ ├── inttypes.h │ ├── langinfo.h │ ├── libc.a │ ├── libgen.h │ ├── limits.h │ ├── locale.h │ ├── machine │ │ ├── _arc4random.h │ │ ├── _default_types.h │ │ ├── _endian.h │ │ ├── _time.h │ │ ├── _types.h │ │ ├── acle-compat.h │ │ ├── ansi.h │ │ ├── endian.h │ │ ├── fastmath.h │ │ ├── ieeefp.h │ │ ├── malloc.h │ │ ├── math.h │ │ ├── param.h │ │ ├── setjmp-dj.h │ │ ├── setjmp.h │ │ ├── stdlib.h │ │ ├── termios.h │ │ ├── time.h │ │ └── types.h │ ├── malloc.h │ ├── math.h │ ├── memory.h │ ├── newlib.h │ ├── paths.h │ ├── picolibc.h │ ├── picotls.h │ ├── pwd.h │ ├── regdef.h │ ├── regex.h │ ├── rpc │ │ ├── types.h │ │ └── xdr.h │ ├── sched.h │ ├── search.h │ ├── semihost.h │ ├── setjmp.h │ ├── signal.h │ ├── spawn.h │ ├── ssp │ │ ├── ssp.h │ │ ├── stdio.h │ │ ├── stdlib.h │ │ ├── string.h │ │ ├── strings.h │ │ ├── unistd.h │ │ └── wchar.h │ ├── stdint.h │ ├── stdio-bufio.h │ ├── stdio.h │ ├── stdlib.h │ ├── string.h │ ├── strings.h │ ├── sys │ │ ├── _default_fcntl.h │ │ ├── _intsup.h │ │ ├── _locale.h │ │ ├── _sigset.h │ │ ├── _stdint.h │ │ ├── _timespec.h │ │ ├── _timeval.h │ │ ├── _types.h │ │ ├── _tz_structs.h │ │ ├── auxv.h │ │ ├── cdefs.h │ │ ├── config.h │ │ ├── custom_file.h │ │ ├── dir.h │ │ ├── dirent.h │ │ ├── errno.h │ │ ├── fcntl.h │ │ ├── features.h │ │ ├── fenv.h │ │ ├── file.h │ │ ├── iconvnls.h │ │ ├── lock.h │ │ ├── param.h │ │ ├── queue.h │ │ ├── resource.h │ │ ├── sched.h │ │ ├── select.h │ │ ├── signal.h │ │ ├── stat.h │ │ ├── string.h │ │ ├── syslimits.h │ │ ├── time.h │ │ ├── timeb.h │ │ ├── times.h │ │ ├── timespec.h │ │ ├── tree.h │ │ ├── types.h │ │ ├── unistd.h │ │ ├── utime.h │ │ └── wait.h │ ├── tar.h │ ├── termios.h │ ├── threads.h │ ├── time.h │ ├── unctrl.h │ ├── unistd.h │ ├── utime.h │ ├── utmp.h │ ├── wchar.h │ ├── wctype.h │ └── wordexp.h ├── segger │ ├── SEGGER_RTT.c │ ├── SEGGER_RTT.h │ └── SEGGER_RTT_Conf.h └── softdevice │ ├── include │ ├── ble.h │ ├── ble_err.h │ ├── ble_gap.h │ ├── ble_gatt.h │ ├── ble_gattc.h │ ├── ble_gatts.h │ ├── ble_hci.h │ ├── ble_l2cap.h │ ├── ble_ranges.h │ ├── ble_types.h │ ├── nrf52 │ │ └── nrf_mbr.h │ ├── nrf_error.h │ ├── nrf_error_sdm.h │ ├── nrf_error_soc.h │ ├── nrf_nvic.h │ ├── nrf_sdm.h │ ├── nrf_soc.h │ └── nrf_svc.h │ ├── license.md │ └── s140_nrf52_7.3.0_softdevice.hex ├── source ├── application │ ├── Makefile │ ├── bluetooth.c │ ├── bluetooth.h │ ├── camera_configuration.h │ ├── compression.c │ ├── compression.h │ ├── display_configuration.h │ ├── flash.c │ ├── flash.h │ ├── lua_libraries │ │ ├── bluetooth.c │ │ ├── camera.c │ │ ├── compression.c │ │ ├── display.c │ │ ├── file.c │ │ ├── frame_lua_libraries.h │ │ ├── graphical_assets │ │ │ ├── U+0020.png │ │ │ ├── U+0021.png │ │ │ ├── U+0022.png │ │ │ ├── U+0023.png │ │ │ ├── U+0024.png │ │ │ ├── U+0025.png │ │ │ ├── U+0026.png │ │ │ ├── U+0027.png │ │ │ ├── U+0028.png │ │ │ ├── U+0029.png │ │ │ ├── U+002A.png │ │ │ ├── U+002B.png │ │ │ ├── U+002C.png │ │ │ ├── U+002D.png │ │ │ ├── U+002E.png │ │ │ ├── U+0030.png │ │ │ ├── U+0031.png │ │ │ ├── U+0032.png │ │ │ ├── U+0033.png │ │ │ ├── U+0034.png │ │ │ ├── U+0035.png │ │ │ ├── U+0036.png │ │ │ ├── U+0037.png │ │ │ ├── U+0038.png │ │ │ ├── U+0039.png │ │ │ ├── U+003A.png │ │ │ ├── U+003B.png │ │ │ ├── U+003C.png │ │ │ ├── U+003D.png │ │ │ ├── U+003E.png │ │ │ ├── U+003F.png │ │ │ ├── U+0040.png │ │ │ ├── U+0041.png │ │ │ ├── U+0042.png │ │ │ ├── U+0043.png │ │ │ ├── U+0044.png │ │ │ ├── U+0045.png │ │ │ ├── U+0046.png │ │ │ ├── U+0047.png │ │ │ ├── U+0048.png │ │ │ ├── U+0049.png │ │ │ ├── U+004A.png │ │ │ ├── U+004B.png │ │ │ ├── U+004C.png │ │ │ ├── U+004D.png │ │ │ ├── U+004E.png │ │ │ ├── U+004F.png │ │ │ ├── U+0050.png │ │ │ ├── U+0051.png │ │ │ ├── U+0052.png │ │ │ ├── U+0053.png │ │ │ ├── U+0054.png │ │ │ ├── U+0055.png │ │ │ ├── U+0056.png │ │ │ ├── U+0057.png │ │ │ ├── U+0058.png │ │ │ ├── U+0059.png │ │ │ ├── U+005A.png │ │ │ ├── U+005B.png │ │ │ ├── U+005C.png │ │ │ ├── U+005D.png │ │ │ ├── U+005E.png │ │ │ ├── U+005F.png │ │ │ ├── U+0060.png │ │ │ ├── U+0061.png │ │ │ ├── U+0062.png │ │ │ ├── U+0063.png │ │ │ ├── U+0064.png │ │ │ ├── U+0065.png │ │ │ ├── U+0066.png │ │ │ ├── U+0067.png │ │ │ ├── U+0068.png │ │ │ ├── U+0069.png │ │ │ ├── U+006A.png │ │ │ ├── U+006B.png │ │ │ ├── U+006C.png │ │ │ ├── U+006D.png │ │ │ ├── U+006E.png │ │ │ ├── U+006F.png │ │ │ ├── U+0070.png │ │ │ ├── U+0071.png │ │ │ ├── U+0072.png │ │ │ ├── U+0073.png │ │ │ ├── U+0074.png │ │ │ ├── U+0075.png │ │ │ ├── U+0076.png │ │ │ ├── U+0077.png │ │ │ ├── U+0078.png │ │ │ ├── U+0079.png │ │ │ ├── U+007A.png │ │ │ ├── U+007B.png │ │ │ ├── U+007C.png │ │ │ ├── U+007D.png │ │ │ ├── U+007E.png │ │ │ ├── U+00A1.png │ │ │ ├── U+00A2.png │ │ │ ├── U+00A3.png │ │ │ ├── U+00A5.png │ │ │ ├── U+00A9.png │ │ │ ├── U+00AB.png │ │ │ ├── U+00AE.png │ │ │ ├── U+00B0.png │ │ │ ├── U+00B1.png │ │ │ ├── U+00B5.png │ │ │ ├── U+00B7.png │ │ │ ├── U+00BB.png │ │ │ ├── U+00BF.png │ │ │ ├── U+00C0.png │ │ │ ├── U+00C1.png │ │ │ ├── U+00C2.png │ │ │ ├── U+00C3.png │ │ │ ├── U+00C4.png │ │ │ ├── U+00C5.png │ │ │ ├── U+00C6.png │ │ │ ├── U+00C7.png │ │ │ ├── U+00C8.png │ │ │ ├── U+00C9.png │ │ │ ├── U+00CA.png │ │ │ ├── U+00CB.png │ │ │ ├── U+00CC.png │ │ │ ├── U+00CD.png │ │ │ ├── U+00CE.png │ │ │ ├── U+00CF.png │ │ │ ├── U+00D0.png │ │ │ ├── U+00D1.png │ │ │ ├── U+00D2.png │ │ │ ├── U+00D3.png │ │ │ ├── U+00D4.png │ │ │ ├── U+00D5.png │ │ │ ├── U+00D6.png │ │ │ ├── U+00D7.png │ │ │ ├── U+00D8.png │ │ │ ├── U+00D9.png │ │ │ ├── U+00DA.png │ │ │ ├── U+00DB.png │ │ │ ├── U+00DC.png │ │ │ ├── U+00DD.png │ │ │ ├── U+00DE.png │ │ │ ├── U+00DF.png │ │ │ ├── U+00E0.png │ │ │ ├── U+00E1.png │ │ │ ├── U+00E2.png │ │ │ ├── U+00E3.png │ │ │ ├── U+00E4.png │ │ │ ├── U+00E5.png │ │ │ ├── U+00E6.png │ │ │ ├── U+00E7.png │ │ │ ├── U+00E8.png │ │ │ ├── U+00E9.png │ │ │ ├── U+00EA.png │ │ │ ├── U+00EB.png │ │ │ ├── U+00EC.png │ │ │ ├── U+00ED.png │ │ │ ├── U+00EE.png │ │ │ ├── U+00EF.png │ │ │ ├── U+00F0.png │ │ │ ├── U+00F1.png │ │ │ ├── U+00F2.png │ │ │ ├── U+00F3.png │ │ │ ├── U+00F4.png │ │ │ ├── U+00F5.png │ │ │ ├── U+00F6.png │ │ │ ├── U+00F7.png │ │ │ ├── U+00F8.png │ │ │ ├── U+00F9.png │ │ │ ├── U+00FA.png │ │ │ ├── U+00FB.png │ │ │ ├── U+00FC.png │ │ │ ├── U+00FD.png │ │ │ ├── U+00FE.png │ │ │ ├── U+00FF.png │ │ │ ├── U+0131.png │ │ │ ├── U+0141.png │ │ │ ├── U+0142.png │ │ │ ├── U+0152.png │ │ │ ├── U+0153.png │ │ │ ├── U+0160.png │ │ │ ├── U+0161.png │ │ │ ├── U+0178.png │ │ │ ├── U+017D.png │ │ │ ├── U+017E.png │ │ │ ├── U+0192.png │ │ │ ├── U+20AC.png │ │ │ ├── U+F0000.png │ │ │ ├── U+F0001.png │ │ │ ├── U+F0002.png │ │ │ ├── U+F0003.png │ │ │ ├── U+F0004.png │ │ │ ├── U+F0005.png │ │ │ ├── U+F0006.png │ │ │ ├── U+F0007.png │ │ │ ├── U+F0008.png │ │ │ ├── U+F0009.png │ │ │ ├── U+F000A.png │ │ │ ├── U+F000B.png │ │ │ ├── U+F000C.png │ │ │ ├── U+F000D.png │ │ │ ├── U+F000E.png │ │ │ ├── U+F000F.png │ │ │ ├── U+F0010.png │ │ │ ├── readme.md │ │ │ └── system_font.h │ │ ├── imu.c │ │ ├── led.c │ │ ├── microphone.c │ │ ├── system.c │ │ ├── time.c │ │ └── version.c │ ├── luaport.c │ ├── luaport.h │ ├── main.c │ ├── main.h │ ├── nrfx_config.h │ ├── section_layout.ld │ ├── spi.c │ ├── spi.h │ ├── watchdog.c │ └── watchdog.h ├── bootloader │ ├── Makefile │ ├── dfu_private_key.pem │ ├── dfu_public_key.c │ ├── frame-bootloader-v23.352.1005.hex │ ├── main.c │ ├── nrf_crypto_allocator.h │ ├── nrfx_config.h │ ├── sdk_config.h │ └── section_layout.ld ├── error_logging.c ├── error_logging.h ├── fpga │ ├── Makefile │ ├── cocotb │ │ ├── .gitignore │ │ ├── README │ │ ├── common │ │ │ ├── dumper.vh │ │ │ ├── include.mk │ │ │ ├── tb_top.py │ │ │ └── tb_top.sv │ │ ├── images │ │ │ ├── 4.2.03.tiff │ │ │ ├── 4.2.03.tiff.npy │ │ │ ├── 4.2.07.tiff │ │ │ ├── 4.2.07.tiff.npy │ │ │ ├── baboon.bmp │ │ │ └── baboon.bmp.npy │ │ ├── jed │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ ├── encoder.py │ │ │ ├── jpg.py │ │ │ └── src │ │ │ │ ├── decoder.cpp │ │ │ │ ├── encoder.cpp │ │ │ │ ├── header.cpp │ │ │ │ └── jpg.h │ │ ├── jpeg_common │ │ │ ├── colorspace.py │ │ │ ├── dct.py │ │ │ ├── dct_aan.py │ │ │ ├── huff_tables.py │ │ │ ├── huffman_codes_rom.txt │ │ │ ├── jcommon.py │ │ │ ├── quant.py │ │ │ └── quant_seq_mult.py │ │ └── tests │ │ │ ├── camera │ │ │ ├── .gitignore │ │ │ ├── 1.gtkw │ │ │ ├── Makefile │ │ │ └── camera_test.py │ │ │ ├── graphics │ │ │ ├── 1.gtkw │ │ │ ├── Makefile │ │ │ └── graphics_test.py │ │ │ ├── pll │ │ │ ├── Makefile │ │ │ ├── pll_tb.sv │ │ │ └── pll_test.py │ │ │ └── spi │ │ │ ├── 1.gtkw │ │ │ ├── Makefile │ │ │ └── spi_test.py │ ├── fpga_application.h │ ├── fpga_pinout.pdc │ ├── license.md │ ├── modules │ │ ├── camera │ │ │ ├── camera.sv │ │ │ ├── crop.sv │ │ │ ├── debayer.sv │ │ │ ├── gamma_correction.sv │ │ │ ├── image_buffer.sv │ │ │ ├── jpeg_encoder │ │ │ │ ├── jenc │ │ │ │ │ ├── bit_pack.sv │ │ │ │ │ ├── byte_pack.sv │ │ │ │ │ ├── dct_1d_aan.sv │ │ │ │ │ ├── dct_2d.sv │ │ │ │ │ ├── entropy.sv │ │ │ │ │ ├── ff00.sv │ │ │ │ │ ├── huff_tables.sv │ │ │ │ │ ├── jenc.sv │ │ │ │ │ ├── quant.sv │ │ │ │ │ ├── quant_seq_mult_15x13_p4.sv │ │ │ │ │ ├── quant_tables.sv │ │ │ │ │ ├── quant_tables.vh │ │ │ │ │ ├── quant_tables_EBR.vh │ │ │ │ │ ├── transpose.sv │ │ │ │ │ ├── zigzag.sv │ │ │ │ │ └── zigzag.vh │ │ │ │ ├── jisp │ │ │ │ │ ├── jisp.sv │ │ │ │ │ ├── mcu_buffer.sv │ │ │ │ │ ├── rgb2yuv.sv │ │ │ │ │ └── subsample.sv │ │ │ │ ├── jlib │ │ │ │ │ ├── afifo.v │ │ │ │ │ ├── dp_ram.sv │ │ │ │ │ ├── dp_ram_be.sv │ │ │ │ │ ├── huffman_codes_rom_EBR.sv │ │ │ │ │ ├── large_ram_dp_q.sv │ │ │ │ │ ├── psync1.sv │ │ │ │ │ ├── ram_dp_w32_b4_d64_EBR.sv │ │ │ │ │ ├── ram_dp_w64_b8_d1440_EBR.sv │ │ │ │ │ └── ram_dp_w64_b8_d2880_EBR.sv │ │ │ │ ├── jpeg_encoder.sv │ │ │ │ └── jpeg_encoder.vh │ │ │ ├── metering.sv │ │ │ ├── spi_registers.sv │ │ │ ├── testbenches │ │ │ │ ├── Makefile │ │ │ │ ├── camera │ │ │ │ │ ├── camera_tb.gtkw │ │ │ │ │ └── camera_tb.sv │ │ │ │ ├── csi │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── csi.rdf │ │ │ │ │ ├── csi │ │ │ │ │ │ ├── byte_to_pixel_ip.cprj │ │ │ │ │ │ ├── byte_to_pixel_ip.v │ │ │ │ │ │ ├── csi2_receiver_ip.cprj │ │ │ │ │ │ ├── csi2_receiver_ip.v │ │ │ │ │ │ ├── csi2_transmitter_ip.cprj │ │ │ │ │ │ ├── csi2_transmitter_ip.v │ │ │ │ │ │ ├── csi_csi.cprj │ │ │ │ │ │ ├── csi_csi_lattice.synproj │ │ │ │ │ │ ├── csi_csi_synthesize.tcl │ │ │ │ │ │ ├── message_log.xml │ │ │ │ │ │ ├── pixel_to_byte_ip.cprj │ │ │ │ │ │ ├── pixel_to_byte_ip.v │ │ │ │ │ │ ├── pll_sim_ip.cprj │ │ │ │ │ │ └── pll_sim_ip.v │ │ │ │ │ ├── csi1.sty │ │ │ │ │ ├── promote.xml │ │ │ │ │ ├── reportview.xml │ │ │ │ │ └── source │ │ │ │ │ │ └── csi │ │ │ │ │ │ ├── byte_to_pixel_ip │ │ │ │ │ │ ├── byte_to_pixel_ip.cfg │ │ │ │ │ │ ├── byte_to_pixel_ip.ipx │ │ │ │ │ │ ├── component.xml │ │ │ │ │ │ └── design.xml │ │ │ │ │ │ ├── csi2_receiver_ip │ │ │ │ │ │ ├── component.xml │ │ │ │ │ │ ├── csi2_receiver_ip.cfg │ │ │ │ │ │ ├── csi2_receiver_ip.ipx │ │ │ │ │ │ └── design.xml │ │ │ │ │ │ ├── csi2_transmitter_ip │ │ │ │ │ │ ├── component.xml │ │ │ │ │ │ ├── csi2_transmitter_ip.cfg │ │ │ │ │ │ ├── csi2_transmitter_ip.ipx │ │ │ │ │ │ └── design.xml │ │ │ │ │ │ ├── csi_tb.sv │ │ │ │ │ │ ├── image_gen.sv │ │ │ │ │ │ ├── pixel_to_byte_ip │ │ │ │ │ │ ├── component.xml │ │ │ │ │ │ ├── design.xml │ │ │ │ │ │ ├── pixel_to_byte_ip.cfg │ │ │ │ │ │ └── pixel_to_byte_ip.ipx │ │ │ │ │ │ ├── pll_sim_ip │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── Makefile │ │ │ │ │ │ ├── component.xml │ │ │ │ │ │ ├── design.xml │ │ │ │ │ │ ├── pll_sim_ip.cfg │ │ │ │ │ │ └── pll_sim_ip.ipx │ │ │ │ │ │ └── reset.sv │ │ │ │ ├── debayer │ │ │ │ │ ├── debayer_tb.gtkw │ │ │ │ │ ├── debayer_tb.sv │ │ │ │ │ ├── debayer_utils.py │ │ │ │ │ ├── test_image.png │ │ │ │ │ ├── test_image_bayered.png │ │ │ │ │ ├── test_image_debayered.mem │ │ │ │ │ └── test_image_debayered.png │ │ │ │ ├── image_buffer │ │ │ │ │ ├── image_buffer_tb.gtkw │ │ │ │ │ └── image_buffer_tb.sv │ │ │ │ └── image_gen.sv │ │ │ └── tools │ │ │ │ └── gamma_table_generator_script.py │ │ ├── graphics │ │ │ ├── color_palette.sv │ │ │ ├── display_buffers.sv │ │ │ ├── display_driver.sv │ │ │ ├── graphics.sv │ │ │ ├── sprite_engine.sv │ │ │ └── testbenches │ │ │ │ └── README │ │ ├── pll │ │ │ ├── clkswitch.v │ │ │ ├── pll_csr.sv │ │ │ └── pll_wrapper.sv │ │ ├── reset │ │ │ ├── global_reset_sync.sv │ │ │ └── reset_sync.sv │ │ └── spi │ │ │ ├── spi_peripheral.sv │ │ │ ├── spi_register.sv │ │ │ └── testbenches │ │ │ ├── Makefile │ │ │ ├── spi_tb.gtkw │ │ │ └── spi_tb.sv │ ├── radiant │ │ ├── .gitignore │ │ ├── Makefile │ │ ├── byte_to_pixel_ip │ │ │ ├── byte_to_pixel_ip.cfg │ │ │ ├── byte_to_pixel_ip.ipx │ │ │ ├── component.xml │ │ │ └── design.xml │ │ ├── csi2_receiver_ip │ │ │ ├── component.xml │ │ │ ├── csi2_receiver_ip.cfg │ │ │ ├── csi2_receiver_ip.ipx │ │ │ └── design.xml │ │ ├── frame.rdf │ │ ├── pll_ip │ │ │ ├── Makefile │ │ │ ├── component.xml │ │ │ ├── design.xml │ │ │ ├── pll_ip.cfg │ │ │ └── pll_ip.ipx │ │ ├── run.tcl │ │ ├── source │ │ │ └── frame │ │ │ │ ├── frame.ldc │ │ │ │ └── frame.pdc │ │ └── strategy.sty │ └── top.sv ├── i2c.c ├── i2c.h ├── memory_layout.ld ├── nrfx_glue.h ├── nrfx_log.h ├── pinout.h ├── radio_test │ ├── Makefile │ ├── main.c │ ├── main.h │ ├── nrfx_config.h │ ├── radio_test.c │ ├── radio_test.h │ └── section_layout.ld ├── startup.c └── syscalls.c └── tests ├── test_api.py ├── test_bluetooth_callback_api.py ├── test_bluetooth_throughput.py ├── test_camera.py ├── test_camera_and_audio.py ├── test_camera_exposure.py ├── test_camera_fps.py ├── test_camera_low_level_power_down.py ├── test_compression.py ├── test_display_animation.py ├── test_display_brightness.py ├── test_file_api.py ├── test_file_execution.py ├── test_imu_direction.py ├── test_imu_raw.py ├── test_led.py ├── test_microphone.py ├── test_power_saving.py ├── test_taps.py ├── test_text_api.py └── test_version.py /.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore build files 2 | build/ 3 | 4 | # Ignore simulation files 5 | simulation/ 6 | abc.history 7 | 8 | # Ignore VSCode user settings 9 | .vscode/settings.json 10 | 11 | # Ignore draw.io backup files 12 | *.png.bkp 13 | *.dtmp 14 | 15 | # Temp test files 16 | test_scratch_pad*.py 17 | 18 | # Temp focusing image and production logs 19 | production/focus_image.* 20 | production/log.txt 21 | production/frame-firmware-*.hex 22 | 23 | # Python virtual env 24 | .venv -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "libraries/cmsis"] 2 | path = libraries/cmsis 3 | url = https://github.com/ARM-software/CMSIS_5.git 4 | [submodule "libraries/nrfx"] 5 | path = libraries/nrfx 6 | url = https://github.com/NordicSemiconductor/nrfx.git 7 | -------------------------------------------------------------------------------- /.vscode/c_cpp_properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "configurations": [ 3 | { 4 | "name": "frame-codebase", 5 | "cStandard": "gnu17", 6 | "cppStandard": "gnu++14", 7 | "includePath": [ 8 | "libraries/cmsis/CMSIS/Core/Include", 9 | "libraries/littlefs", 10 | "libraries/lua", 11 | "libraries/lz4", 12 | "libraries/nrf5sdk/**", 13 | "libraries/nrfx", 14 | "libraries/nrfx/drivers/include", 15 | "libraries/nrfx/hal", 16 | "libraries/nrfx/mdk", 17 | "libraries/nrfx/soc", 18 | "libraries/picolibc", 19 | "libraries/segger", 20 | "libraries/softdevice/include", 21 | "libraries/softdevice/include/nrf52", 22 | "source", 23 | "source/application", 24 | "source/application/lua_libraries", 25 | "source/application/lua_libraries/graphical_assets", 26 | "source/bootloader", 27 | "source/fpga", 28 | "source/radio_test", 29 | ], 30 | "defines": [ 31 | "BLE_STACK_SUPPORT_REQD", 32 | "BOARD_PCA10056", 33 | "BUILD_VERSION=\"vYY.DDD.HHMM\"", 34 | "GIT_COMMIT=\"abcdefg\"", 35 | "LFS_NO_DEBUG", 36 | "LFS_NO_ERROR", 37 | "LFS_NO_WARN", 38 | "NDEBUG", 39 | "NRF_DFU_SETTINGS_VERSION=2", 40 | "NRF52840_XXAA", 41 | "SOFTDEVICE_PRESENT", 42 | "TEST_FREQUENCY=80", 43 | "TEST_POWER=8", 44 | ] 45 | } 46 | ], 47 | "version": 4 48 | } -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | ISC License 2 | 3 | Copyright 2023 Brilliant Labs Ltd. 4 | 5 | Permission to use, copy, modify, and/or distribute this software for any purpose 6 | with or without fee is hereby granted, provided that the above copyright notice 7 | and this permission notice appear in all copies. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 10 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 11 | FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 12 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS 13 | OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 14 | TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF 15 | THIS SOFTWARE. 16 | 17 | Unless specified otherwise (see below), the above license and copyright applies 18 | to all files within this repository. 19 | 20 | Individual files or subdirectories may include additional copyright holders, or 21 | may be licensed under different terms. -------------------------------------------------------------------------------- /docs/diagrams/camera-jpeg-encoder-architecture-2.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/docs/diagrams/camera-jpeg-encoder-architecture-2.drawio.png -------------------------------------------------------------------------------- /docs/diagrams/camera-jpeg-encoder-architecture.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/docs/diagrams/camera-jpeg-encoder-architecture.drawio.png -------------------------------------------------------------------------------- /docs/diagrams/camera-pipeline-architecture.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/docs/diagrams/camera-pipeline-architecture.drawio.png -------------------------------------------------------------------------------- /docs/diagrams/fpga-architecture.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/docs/diagrams/fpga-architecture.drawio.png -------------------------------------------------------------------------------- /docs/diagrams/frame-system-architecture.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/docs/diagrams/frame-system-architecture.drawio.png -------------------------------------------------------------------------------- /docs/diagrams/graphics-color-palette.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/docs/diagrams/graphics-color-palette.drawio.png -------------------------------------------------------------------------------- /docs/diagrams/graphics-pipeline-architecture.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/docs/diagrams/graphics-pipeline-architecture.drawio.png -------------------------------------------------------------------------------- /docs/diagrams/graphics-sprite-engine.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/docs/diagrams/graphics-sprite-engine.drawio.png -------------------------------------------------------------------------------- /docs/diagrams/graphics-vector-engine.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/docs/diagrams/graphics-vector-engine.drawio.png -------------------------------------------------------------------------------- /libraries/littlefs/LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022, The littlefs authors. 2 | Copyright (c) 2017, Arm Limited. All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, 5 | are permitted provided that the following conditions are met: 6 | 7 | - Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | - Redistributions in binary form must reproduce the above copyright notice, this 10 | list of conditions and the following disclaimer in the documentation and/or 11 | other materials provided with the distribution. 12 | - Neither the name of ARM nor the names of its contributors may be used to 13 | endorse or promote products derived from this software without specific prior 14 | written permission. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 20 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 23 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | -------------------------------------------------------------------------------- /libraries/littlefs/VERSION.md: -------------------------------------------------------------------------------- 1 | v2.8.1 c733d9e 2 | -------------------------------------------------------------------------------- /libraries/littlefs/lfs_util.c: -------------------------------------------------------------------------------- 1 | /* 2 | * lfs util functions 3 | * 4 | * Copyright (c) 2022, The littlefs authors. 5 | * Copyright (c) 2017, Arm Limited. All rights reserved. 6 | * SPDX-License-Identifier: BSD-3-Clause 7 | */ 8 | #include "lfs_util.h" 9 | 10 | // Only compile if user does not provide custom config 11 | #ifndef LFS_CONFIG 12 | 13 | 14 | // Software CRC implementation with small lookup table 15 | uint32_t lfs_crc(uint32_t crc, const void *buffer, size_t size) { 16 | static const uint32_t rtable[16] = { 17 | 0x00000000, 0x1db71064, 0x3b6e20c8, 0x26d930ac, 18 | 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c, 19 | 0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, 20 | 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c, 21 | }; 22 | 23 | const uint8_t *data = buffer; 24 | 25 | for (size_t i = 0; i < size; i++) { 26 | crc = (crc >> 4) ^ rtable[(crc ^ (data[i] >> 0)) & 0xf]; 27 | crc = (crc >> 4) ^ rtable[(crc ^ (data[i] >> 4)) & 0xf]; 28 | } 29 | 30 | return crc; 31 | } 32 | 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /libraries/lua/lapi.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** $Id: lapi.h $ 3 | ** Auxiliary functions from Lua API 4 | ** See Copyright Notice in lua.h 5 | */ 6 | 7 | #ifndef lapi_h 8 | #define lapi_h 9 | 10 | 11 | #include "llimits.h" 12 | #include "lstate.h" 13 | 14 | 15 | /* Increments 'L->top.p', checking for stack overflows */ 16 | #define api_incr_top(L) {L->top.p++; \ 17 | api_check(L, L->top.p <= L->ci->top.p, \ 18 | "stack overflow");} 19 | 20 | 21 | /* 22 | ** If a call returns too many multiple returns, the callee may not have 23 | ** stack space to accommodate all results. In this case, this macro 24 | ** increases its stack space ('L->ci->top.p'). 25 | */ 26 | #define adjustresults(L,nres) \ 27 | { if ((nres) <= LUA_MULTRET && L->ci->top.p < L->top.p) \ 28 | L->ci->top.p = L->top.p; } 29 | 30 | 31 | /* Ensure the stack has at least 'n' elements */ 32 | #define api_checknelems(L,n) \ 33 | api_check(L, (n) < (L->top.p - L->ci->func.p), \ 34 | "not enough elements in the stack") 35 | 36 | 37 | /* 38 | ** To reduce the overhead of returning from C functions, the presence of 39 | ** to-be-closed variables in these functions is coded in the CallInfo's 40 | ** field 'nresults', in a way that functions with no to-be-closed variables 41 | ** with zero, one, or "all" wanted results have no overhead. Functions 42 | ** with other number of wanted results, as well as functions with 43 | ** variables to be closed, have an extra check. 44 | */ 45 | 46 | #define hastocloseCfunc(n) ((n) < LUA_MULTRET) 47 | 48 | /* Map [-1, inf) (range of 'nresults') into (-inf, -2] */ 49 | #define codeNresults(n) (-(n) - 3) 50 | #define decodeNresults(n) (-(n) - 3) 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /libraries/lua/linit.c: -------------------------------------------------------------------------------- 1 | /* 2 | ** $Id: linit.c $ 3 | ** Initialization of libraries for lua.c and other clients 4 | ** See Copyright Notice in lua.h 5 | */ 6 | 7 | #define linit_c 8 | #define LUA_LIB 9 | 10 | /* 11 | ** If you embed Lua in your program and need to open the standard 12 | ** libraries, call luaL_openlibs in your program. If you need a 13 | ** different set of libraries, copy this file to your project and edit 14 | ** it to suit your needs. 15 | ** 16 | ** You can also *preload* libraries, so that a later 'require' can 17 | ** open the library, which is already linked to the application. 18 | ** For that, do the following code: 19 | ** 20 | ** luaL_getsubtable(L, LUA_REGISTRYINDEX, LUA_PRELOAD_TABLE); 21 | ** lua_pushcfunction(L, luaopen_modname); 22 | ** lua_setfield(L, -2, modname); 23 | ** lua_pop(L, 1); // remove PRELOAD table 24 | */ 25 | 26 | #include "lprefix.h" 27 | 28 | #include 29 | 30 | #include "lua.h" 31 | 32 | #include "lualib.h" 33 | #include "lauxlib.h" 34 | 35 | /* 36 | ** these libs are loaded by lua.c and are readily available to any Lua 37 | ** program 38 | */ 39 | static const luaL_Reg loadedlibs[] = { 40 | {LUA_GNAME, luaopen_base}, 41 | {LUA_LOADLIBNAME, luaopen_package}, 42 | {LUA_COLIBNAME, luaopen_coroutine}, 43 | {LUA_TABLIBNAME, luaopen_table}, 44 | {LUA_IOLIBNAME, luaopen_io}, 45 | {LUA_OSLIBNAME, luaopen_os}, 46 | {LUA_STRLIBNAME, luaopen_string}, 47 | {LUA_MATHLIBNAME, luaopen_math}, 48 | {LUA_UTF8LIBNAME, luaopen_utf8}, 49 | {LUA_DBLIBNAME, luaopen_debug}, 50 | {NULL, NULL}}; 51 | 52 | LUALIB_API void luaL_openlibs(lua_State *L) 53 | { 54 | const luaL_Reg *lib; 55 | /* "require" functions from 'loadedlibs' and set results to global table */ 56 | for (lib = loadedlibs; lib->func; lib++) 57 | { 58 | luaL_requiref(L, lib->name, lib->func, 1); 59 | lua_pop(L, 1); /* remove lib */ 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /libraries/lua/lopnames.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** $Id: lopnames.h $ 3 | ** Opcode names 4 | ** See Copyright Notice in lua.h 5 | */ 6 | 7 | #if !defined(lopnames_h) 8 | #define lopnames_h 9 | 10 | #include 11 | 12 | 13 | /* ORDER OP */ 14 | 15 | static const char *const opnames[] = { 16 | "MOVE", 17 | "LOADI", 18 | "LOADF", 19 | "LOADK", 20 | "LOADKX", 21 | "LOADFALSE", 22 | "LFALSESKIP", 23 | "LOADTRUE", 24 | "LOADNIL", 25 | "GETUPVAL", 26 | "SETUPVAL", 27 | "GETTABUP", 28 | "GETTABLE", 29 | "GETI", 30 | "GETFIELD", 31 | "SETTABUP", 32 | "SETTABLE", 33 | "SETI", 34 | "SETFIELD", 35 | "NEWTABLE", 36 | "SELF", 37 | "ADDI", 38 | "ADDK", 39 | "SUBK", 40 | "MULK", 41 | "MODK", 42 | "POWK", 43 | "DIVK", 44 | "IDIVK", 45 | "BANDK", 46 | "BORK", 47 | "BXORK", 48 | "SHRI", 49 | "SHLI", 50 | "ADD", 51 | "SUB", 52 | "MUL", 53 | "MOD", 54 | "POW", 55 | "DIV", 56 | "IDIV", 57 | "BAND", 58 | "BOR", 59 | "BXOR", 60 | "SHL", 61 | "SHR", 62 | "MMBIN", 63 | "MMBINI", 64 | "MMBINK", 65 | "UNM", 66 | "BNOT", 67 | "NOT", 68 | "LEN", 69 | "CONCAT", 70 | "CLOSE", 71 | "TBC", 72 | "JMP", 73 | "EQ", 74 | "LT", 75 | "LE", 76 | "EQK", 77 | "EQI", 78 | "LTI", 79 | "LEI", 80 | "GTI", 81 | "GEI", 82 | "TEST", 83 | "TESTSET", 84 | "CALL", 85 | "TAILCALL", 86 | "RETURN", 87 | "RETURN0", 88 | "RETURN1", 89 | "FORLOOP", 90 | "FORPREP", 91 | "TFORPREP", 92 | "TFORCALL", 93 | "TFORLOOP", 94 | "SETLIST", 95 | "CLOSURE", 96 | "VARARG", 97 | "VARARGPREP", 98 | "EXTRAARG", 99 | NULL 100 | }; 101 | 102 | #endif 103 | 104 | -------------------------------------------------------------------------------- /libraries/lua/lprefix.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** $Id: lprefix.h $ 3 | ** Definitions for Lua code that must come before any other header file 4 | ** See Copyright Notice in lua.h 5 | */ 6 | 7 | #ifndef lprefix_h 8 | #define lprefix_h 9 | 10 | 11 | /* 12 | ** Allows POSIX/XSI stuff 13 | */ 14 | #if !defined(LUA_USE_C89) /* { */ 15 | 16 | #if !defined(_XOPEN_SOURCE) 17 | #define _XOPEN_SOURCE 600 18 | #elif _XOPEN_SOURCE == 0 19 | #undef _XOPEN_SOURCE /* use -D_XOPEN_SOURCE=0 to undefine it */ 20 | #endif 21 | 22 | /* 23 | ** Allows manipulation of large files in gcc and some other compilers 24 | */ 25 | #if !defined(LUA_32BITS) && !defined(_FILE_OFFSET_BITS) 26 | #define _LARGEFILE_SOURCE 1 27 | #define _FILE_OFFSET_BITS 64 28 | #endif 29 | 30 | #endif /* } */ 31 | 32 | 33 | /* 34 | ** Windows stuff 35 | */ 36 | #if defined(_WIN32) /* { */ 37 | 38 | #if !defined(_CRT_SECURE_NO_WARNINGS) 39 | #define _CRT_SECURE_NO_WARNINGS /* avoid warnings about ISO C functions */ 40 | #endif 41 | 42 | #endif /* } */ 43 | 44 | #endif 45 | 46 | -------------------------------------------------------------------------------- /libraries/lua/lstring.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** $Id: lstring.h $ 3 | ** String table (keep all strings handled by Lua) 4 | ** See Copyright Notice in lua.h 5 | */ 6 | 7 | #ifndef lstring_h 8 | #define lstring_h 9 | 10 | #include "lgc.h" 11 | #include "lobject.h" 12 | #include "lstate.h" 13 | 14 | 15 | /* 16 | ** Memory-allocation error message must be preallocated (it cannot 17 | ** be created after memory is exhausted) 18 | */ 19 | #define MEMERRMSG "not enough memory" 20 | 21 | 22 | /* 23 | ** Size of a TString: Size of the header plus space for the string 24 | ** itself (including final '\0'). 25 | */ 26 | #define sizelstring(l) (offsetof(TString, contents) + ((l) + 1) * sizeof(char)) 27 | 28 | #define luaS_newliteral(L, s) (luaS_newlstr(L, "" s, \ 29 | (sizeof(s)/sizeof(char))-1)) 30 | 31 | 32 | /* 33 | ** test whether a string is a reserved word 34 | */ 35 | #define isreserved(s) ((s)->tt == LUA_VSHRSTR && (s)->extra > 0) 36 | 37 | 38 | /* 39 | ** equality for short strings, which are always internalized 40 | */ 41 | #define eqshrstr(a,b) check_exp((a)->tt == LUA_VSHRSTR, (a) == (b)) 42 | 43 | 44 | LUAI_FUNC unsigned int luaS_hash (const char *str, size_t l, unsigned int seed); 45 | LUAI_FUNC unsigned int luaS_hashlongstr (TString *ts); 46 | LUAI_FUNC int luaS_eqlngstr (TString *a, TString *b); 47 | LUAI_FUNC void luaS_resize (lua_State *L, int newsize); 48 | LUAI_FUNC void luaS_clearcache (global_State *g); 49 | LUAI_FUNC void luaS_init (lua_State *L); 50 | LUAI_FUNC void luaS_remove (lua_State *L, TString *ts); 51 | LUAI_FUNC Udata *luaS_newudata (lua_State *L, size_t s, int nuvalue); 52 | LUAI_FUNC TString *luaS_newlstr (lua_State *L, const char *str, size_t l); 53 | LUAI_FUNC TString *luaS_new (lua_State *L, const char *str); 54 | LUAI_FUNC TString *luaS_createlngstrobj (lua_State *L, size_t l); 55 | 56 | 57 | #endif 58 | -------------------------------------------------------------------------------- /libraries/lua/lualib.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** $Id: lualib.h $ 3 | ** Lua standard libraries 4 | ** See Copyright Notice in lua.h 5 | */ 6 | 7 | 8 | #ifndef lualib_h 9 | #define lualib_h 10 | 11 | #include "lua.h" 12 | 13 | 14 | /* version suffix for environment variable names */ 15 | #define LUA_VERSUFFIX "_" LUA_VERSION_MAJOR "_" LUA_VERSION_MINOR 16 | 17 | 18 | LUAMOD_API int (luaopen_base) (lua_State *L); 19 | 20 | #define LUA_COLIBNAME "coroutine" 21 | LUAMOD_API int (luaopen_coroutine) (lua_State *L); 22 | 23 | #define LUA_TABLIBNAME "table" 24 | LUAMOD_API int (luaopen_table) (lua_State *L); 25 | 26 | #define LUA_IOLIBNAME "io" 27 | LUAMOD_API int (luaopen_io) (lua_State *L); 28 | 29 | #define LUA_OSLIBNAME "os" 30 | LUAMOD_API int (luaopen_os) (lua_State *L); 31 | 32 | #define LUA_STRLIBNAME "string" 33 | LUAMOD_API int (luaopen_string) (lua_State *L); 34 | 35 | #define LUA_UTF8LIBNAME "utf8" 36 | LUAMOD_API int (luaopen_utf8) (lua_State *L); 37 | 38 | #define LUA_MATHLIBNAME "math" 39 | LUAMOD_API int (luaopen_math) (lua_State *L); 40 | 41 | #define LUA_DBLIBNAME "debug" 42 | LUAMOD_API int (luaopen_debug) (lua_State *L); 43 | 44 | #define LUA_LOADLIBNAME "package" 45 | LUAMOD_API int (luaopen_package) (lua_State *L); 46 | 47 | 48 | /* open all previous libraries */ 49 | LUALIB_API void (luaL_openlibs) (lua_State *L); 50 | 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /libraries/lua/lundump.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** $Id: lundump.h $ 3 | ** load precompiled Lua chunks 4 | ** See Copyright Notice in lua.h 5 | */ 6 | 7 | #ifndef lundump_h 8 | #define lundump_h 9 | 10 | #include "llimits.h" 11 | #include "lobject.h" 12 | #include "lzio.h" 13 | 14 | 15 | /* data to catch conversion errors */ 16 | #define LUAC_DATA "\x19\x93\r\n\x1a\n" 17 | 18 | #define LUAC_INT 0x5678 19 | #define LUAC_NUM cast_num(370.5) 20 | 21 | /* 22 | ** Encode major-minor version in one byte, one nibble for each 23 | */ 24 | #define MYINT(s) (s[0]-'0') /* assume one-digit numerals */ 25 | #define LUAC_VERSION (MYINT(LUA_VERSION_MAJOR)*16+MYINT(LUA_VERSION_MINOR)) 26 | 27 | #define LUAC_FORMAT 0 /* this is the official format */ 28 | 29 | /* load one chunk; from lundump.c */ 30 | LUAI_FUNC LClosure* luaU_undump (lua_State* L, ZIO* Z, const char* name); 31 | 32 | /* dump one chunk; from ldump.c */ 33 | LUAI_FUNC int luaU_dump (lua_State* L, const Proto* f, lua_Writer w, 34 | void* data, int strip); 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /libraries/lua/lzio.c: -------------------------------------------------------------------------------- 1 | /* 2 | ** $Id: lzio.c $ 3 | ** Buffered streams 4 | ** See Copyright Notice in lua.h 5 | */ 6 | 7 | #define lzio_c 8 | #define LUA_CORE 9 | 10 | #include "lprefix.h" 11 | 12 | 13 | #include 14 | 15 | #include "lua.h" 16 | 17 | #include "llimits.h" 18 | #include "lmem.h" 19 | #include "lstate.h" 20 | #include "lzio.h" 21 | 22 | 23 | int luaZ_fill (ZIO *z) { 24 | size_t size; 25 | lua_State *L = z->L; 26 | const char *buff; 27 | lua_unlock(L); 28 | buff = z->reader(L, z->data, &size); 29 | lua_lock(L); 30 | if (buff == NULL || size == 0) 31 | return EOZ; 32 | z->n = size - 1; /* discount char being returned */ 33 | z->p = buff; 34 | return cast_uchar(*(z->p++)); 35 | } 36 | 37 | 38 | void luaZ_init (lua_State *L, ZIO *z, lua_Reader reader, void *data) { 39 | z->L = L; 40 | z->reader = reader; 41 | z->data = data; 42 | z->n = 0; 43 | z->p = NULL; 44 | } 45 | 46 | 47 | /* --------------------------------------------------------------- read --- */ 48 | size_t luaZ_read (ZIO *z, void *b, size_t n) { 49 | while (n) { 50 | size_t m; 51 | if (z->n == 0) { /* no bytes in buffer? */ 52 | if (luaZ_fill(z) == EOZ) /* try to read more */ 53 | return n; /* no more input; return number of missing bytes */ 54 | else { 55 | z->n++; /* luaZ_fill consumed first byte; put it back */ 56 | z->p--; 57 | } 58 | } 59 | m = (n <= z->n) ? n : z->n; /* min. between n and z->n */ 60 | memcpy(b, z->p, m); 61 | z->n -= m; 62 | z->p += m; 63 | b = (char *)b + m; 64 | n -= m; 65 | } 66 | return 0; 67 | } 68 | 69 | -------------------------------------------------------------------------------- /libraries/lua/lzio.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** $Id: lzio.h $ 3 | ** Buffered streams 4 | ** See Copyright Notice in lua.h 5 | */ 6 | 7 | 8 | #ifndef lzio_h 9 | #define lzio_h 10 | 11 | #include "lua.h" 12 | 13 | #include "lmem.h" 14 | 15 | 16 | #define EOZ (-1) /* end of stream */ 17 | 18 | typedef struct Zio ZIO; 19 | 20 | #define zgetc(z) (((z)->n--)>0 ? cast_uchar(*(z)->p++) : luaZ_fill(z)) 21 | 22 | 23 | typedef struct Mbuffer { 24 | char *buffer; 25 | size_t n; 26 | size_t buffsize; 27 | } Mbuffer; 28 | 29 | #define luaZ_initbuffer(L, buff) ((buff)->buffer = NULL, (buff)->buffsize = 0) 30 | 31 | #define luaZ_buffer(buff) ((buff)->buffer) 32 | #define luaZ_sizebuffer(buff) ((buff)->buffsize) 33 | #define luaZ_bufflen(buff) ((buff)->n) 34 | 35 | #define luaZ_buffremove(buff,i) ((buff)->n -= (i)) 36 | #define luaZ_resetbuffer(buff) ((buff)->n = 0) 37 | 38 | 39 | #define luaZ_resizebuffer(L, buff, size) \ 40 | ((buff)->buffer = luaM_reallocvchar(L, (buff)->buffer, \ 41 | (buff)->buffsize, size), \ 42 | (buff)->buffsize = size) 43 | 44 | #define luaZ_freebuffer(L, buff) luaZ_resizebuffer(L, buff, 0) 45 | 46 | 47 | LUAI_FUNC void luaZ_init (lua_State *L, ZIO *z, lua_Reader reader, 48 | void *data); 49 | LUAI_FUNC size_t luaZ_read (ZIO* z, void *b, size_t n); /* read next n bytes */ 50 | 51 | 52 | 53 | /* --------- Private Part ------------------ */ 54 | 55 | struct Zio { 56 | size_t n; /* bytes still unread */ 57 | const char *p; /* current position in buffer */ 58 | lua_Reader reader; /* reader function */ 59 | void *data; /* additional data */ 60 | lua_State *L; /* Lua state (for reader) */ 61 | }; 62 | 63 | 64 | LUAI_FUNC int luaZ_fill (ZIO *z); 65 | 66 | #endif 67 | -------------------------------------------------------------------------------- /libraries/lz4/LICENSE: -------------------------------------------------------------------------------- 1 | LZ4 Library 2 | Copyright (c) 2011-2020, Yann Collet 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without modification, 6 | are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, this 9 | list of conditions and the following disclaimer. 10 | 11 | * Redistributions in binary form must reproduce the above copyright notice, this 12 | list of conditions and the following disclaimer in the documentation and/or 13 | other materials provided with the distribution. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 19 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 22 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | -------------------------------------------------------------------------------- /libraries/nrf5sdk/ble/common/ble_date_time.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/libraries/nrf5sdk/ble/common/ble_date_time.h -------------------------------------------------------------------------------- /libraries/nrf5sdk/ble/common/ble_sensor_location.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/libraries/nrf5sdk/ble/common/ble_sensor_location.h -------------------------------------------------------------------------------- /libraries/nrf5sdk/bootloader/dfu/dfu-cc.options: -------------------------------------------------------------------------------- 1 | dfu.Hash.hash max_size:32 2 | dfu.SignedCommand.signature max_size:64 3 | dfu.InitCommand.sd_req max_count:16 4 | dfu.InitCommand.boot_validation max_count:3 5 | dfu.BootValidation.bytes max_size:64 -------------------------------------------------------------------------------- /libraries/nrf5sdk/micro-ecc/license.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014, Kenneth MacKay 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, 5 | are permitted provided that the following conditions are met: 6 | * Redistributions of source code must retain the above copyright notice, this 7 | list of conditions and the following disclaimer. 8 | * Redistributions in binary form must reproduce the above copyright notice, 9 | this list of conditions and the following disclaimer in the documentation 10 | and/or other materials provided with the distribution. 11 | 12 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 13 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 14 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 15 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 16 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 17 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 18 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 19 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 20 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 21 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /libraries/nrf5sdk/micro-ecc/micro_ecc_lib_nrf52hf_armgcc.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/libraries/nrf5sdk/micro-ecc/micro_ecc_lib_nrf52hf_armgcc.a -------------------------------------------------------------------------------- /libraries/nrf5sdk/nano-pb/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011 Petteri Aimonen 2 | 3 | This software is provided 'as-is', without any express or 4 | implied warranty. In no event will the authors be held liable 5 | for any damages arising from the use of this software. 6 | 7 | Permission is granted to anyone to use this software for any 8 | purpose, including commercial applications, and to alter it and 9 | redistribute it freely, subject to the following restrictions: 10 | 11 | 1. The origin of this software must not be misrepresented; you 12 | must not claim that you wrote the original software. If you use 13 | this software in a product, an acknowledgment in the product 14 | documentation would be appreciated but is not required. 15 | 16 | 2. Altered source versions must be plainly marked as such, and 17 | must not be misrepresented as being the original software. 18 | 19 | 3. This notice may not be removed or altered from any source 20 | distribution. 21 | -------------------------------------------------------------------------------- /libraries/nrf5sdk/nano-pb/generator/camel_case_splitter.py: -------------------------------------------------------------------------------- 1 | def split_camel_case(input): 2 | def remove_camel_case(camel_case_input): 3 | no_camel_case = "" 4 | if len(camel_case_input) <= 0: 5 | return "" 6 | no_camel_case += camel_case_input[0].lower() 7 | for c in camel_case_input[1:]: 8 | if c.isupper(): 9 | no_camel_case += "_" + c.lower() 10 | else: 11 | no_camel_case += c 12 | return no_camel_case 13 | 14 | underscore_split = input.split("_") 15 | retval = "" 16 | for i in underscore_split: 17 | if is_camel_case_name(i): 18 | retval += remove_camel_case(i) + "_" 19 | else: 20 | retval += i + "_" 21 | 22 | return retval[:-1].replace("__", "_") 23 | 24 | 25 | def is_camel_case_name(input): 26 | if '_' in input: 27 | return False 28 | 29 | if input.islower(): 30 | return False 31 | 32 | if input.isupper(): 33 | return False 34 | 35 | return True -------------------------------------------------------------------------------- /libraries/nrf5sdk/nano-pb/generator/proto/Makefile: -------------------------------------------------------------------------------- 1 | all: nanopb_pb2.py plugin_pb2.py 2 | 3 | %_pb2.py: %.proto 4 | protoc --python_out=. $< 5 | -------------------------------------------------------------------------------- /libraries/nrf5sdk/nano-pb/generator/proto/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/libraries/nrf5sdk/nano-pb/generator/proto/__init__.py -------------------------------------------------------------------------------- /libraries/nrf5sdk/nano-pb/generator/protoc-gen-nanopb: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # This file is used to invoke nanopb_generator.py as a plugin 4 | # to protoc on Linux and other *nix-style systems. 5 | # Use it like this: 6 | # protoc --plugin=nanopb=..../protoc-gen-nanopb --nanopb_out=dir foo.proto 7 | # 8 | # Note that if you use the binary package of nanopb, the protoc 9 | # path is already set up properly and there is no need to give 10 | # --plugin= on the command line. 11 | 12 | MYPATH=$(dirname "$0") 13 | exec "$MYPATH/nanopb_generator.py" --protoc-plugin 14 | -------------------------------------------------------------------------------- /libraries/nrf5sdk/nano-pb/generator/protoc-gen-nanopb.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | :: This file is used to invoke nanopb_generator.py as a plugin 3 | :: to protoc on Windows. 4 | :: Use it like this: 5 | :: protoc --plugin=nanopb=..../protoc-gen-nanopb.bat --nanopb_out=dir foo.proto 6 | :: 7 | :: Note that if you use the binary package of nanopb, the protoc 8 | :: path is already set up properly and there is no need to give 9 | :: --plugin= on the command line. 10 | 11 | set mydir=%~dp0 12 | python "%mydir%\nanopb_generator.py" --protoc-plugin 13 | -------------------------------------------------------------------------------- /libraries/nrf5sdk/nano-pb/pb_common.h: -------------------------------------------------------------------------------- 1 | /* pb_common.h: Common support functions for pb_encode.c and pb_decode.c. 2 | * These functions are rarely needed by applications directly. 3 | */ 4 | 5 | #ifndef PB_COMMON_H_INCLUDED 6 | #define PB_COMMON_H_INCLUDED 7 | 8 | #include "pb.h" 9 | 10 | #ifdef __cplusplus 11 | extern "C" { 12 | #endif 13 | 14 | /* Iterator for pb_field_t list */ 15 | struct pb_field_iter_s { 16 | const pb_field_t *start; /* Start of the pb_field_t array */ 17 | const pb_field_t *pos; /* Current position of the iterator */ 18 | unsigned required_field_index; /* Zero-based index that counts only the required fields */ 19 | void *dest_struct; /* Pointer to start of the structure */ 20 | void *pData; /* Pointer to current field value */ 21 | void *pSize; /* Pointer to count/has field */ 22 | }; 23 | typedef struct pb_field_iter_s pb_field_iter_t; 24 | 25 | /* Initialize the field iterator structure to beginning. 26 | * Returns false if the message type is empty. */ 27 | bool pb_field_iter_begin(pb_field_iter_t *iter, const pb_field_t *fields, void *dest_struct); 28 | 29 | /* Advance the iterator to the next field. 30 | * Returns false when the iterator wraps back to the first field. */ 31 | bool pb_field_iter_next(pb_field_iter_t *iter); 32 | 33 | /* Advance the iterator until it points at a field with the given tag. 34 | * Returns false if no such field exists. */ 35 | bool pb_field_iter_find(pb_field_iter_t *iter, uint32_t tag); 36 | 37 | #ifdef __cplusplus 38 | } /* extern "C" */ 39 | #endif 40 | 41 | #endif 42 | 43 | -------------------------------------------------------------------------------- /libraries/picolibc/alloca.h: -------------------------------------------------------------------------------- 1 | /* libc/include/alloca.h - Allocate memory on stack */ 2 | 3 | /* Copyright (c) 2000 Werner Almesberger */ 4 | /* Rearranged for general inclusion by stdlib.h. 5 | 2001, Corinna Vinschen */ 6 | 7 | #ifndef _NEWLIB_ALLOCA_H 8 | #define _NEWLIB_ALLOCA_H 9 | 10 | #include "_ansi.h" 11 | 12 | #undef alloca 13 | 14 | #ifdef _HAVE_BUILTIN_ALLOCA 15 | #define alloca(size) __builtin_alloca(size) 16 | #else 17 | void * alloca (size_t); 18 | #endif 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /libraries/picolibc/argz.h: -------------------------------------------------------------------------------- 1 | /* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. 2 | * 3 | * Permission to use, copy, modify, and distribute this software 4 | * is freely granted, provided that this notice is preserved. 5 | */ 6 | 7 | #ifndef _ARGZ_H_ 8 | #define _ARGZ_H_ 9 | 10 | #include 11 | #include 12 | 13 | #include "_ansi.h" 14 | 15 | _BEGIN_STD_C 16 | 17 | /* The newlib implementation of these functions assumes that sizeof(char) == 1. */ 18 | error_t argz_create (char *const argv[], char **argz, size_t *argz_len); 19 | error_t argz_create_sep (const char *string, int sep, char **argz, size_t *argz_len); 20 | size_t argz_count (const char *argz, size_t argz_len); 21 | void argz_extract (char *argz, size_t argz_len, char **argv); 22 | void argz_stringify (char *argz, size_t argz_len, int sep); 23 | error_t argz_add (char **argz, size_t *argz_len, const char *str); 24 | error_t argz_add_sep (char **argz, size_t *argz_len, const char *str, int sep); 25 | error_t argz_append (char **argz, size_t *argz_len, const char *buf, size_t buf_len); 26 | error_t argz_delete (char **argz, size_t *argz_len, char *entry); 27 | error_t argz_insert (char **argz, size_t *argz_len, char *before, const char *entry); 28 | char * argz_next (char *argz, size_t argz_len, const char *entry); 29 | error_t argz_replace (char **argz, size_t *argz_len, const char *str, const char *with, unsigned *replace_count); 30 | 31 | _END_STD_C 32 | 33 | #endif /* _ARGZ_H_ */ 34 | -------------------------------------------------------------------------------- /libraries/picolibc/arpa/inet.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2004 Jeff Johnston */ 2 | #ifndef __ARPA_INET_H__ 3 | #define __ARPA_INET_H__ 4 | 5 | #include 6 | 7 | /* byteorder(3) - simimlar to linux */ 8 | #ifndef __machine_host_to_from_network_defined 9 | #if _BYTE_ORDER == _LITTLE_ENDIAN 10 | #define __htonl(_x) __bswap32(_x) 11 | #define __htons(_x) __bswap16(_x) 12 | #define __ntohl(_x) __bswap32(_x) 13 | #define __ntohs(_x) __bswap16(_x) 14 | #define htonl(_x) __htonl(_x) 15 | #define htons(_x) __htons(_x) 16 | #define ntohl(_x) __htonl(_x) 17 | #define ntohs(_x) __htons(_x) 18 | #else 19 | #define __htonl(_x) ((__uint32_t)(_x)) 20 | #define __htons(_x) ((__uint16_t)(_x)) 21 | #define __ntohl(_x) ((__uint32_t)(_x)) 22 | #define __ntohs(_x) ((__uint16_t)(_x)) 23 | #define htonl(_x) __htonl(_x) 24 | #define htons(_x) __htons(_x) 25 | #define ntohl(_x) __ntohl(_x) 26 | #define ntohs(_x) __ntohs(_x) 27 | #endif 28 | #endif /* __machine_host_to_from_network_defined */ 29 | 30 | #endif /* __ARPA_INET_H__ */ 31 | -------------------------------------------------------------------------------- /libraries/picolibc/bits/types/mbstate_t.h: -------------------------------------------------------------------------------- 1 | #ifndef _PICOLIBC_BITS_TYPES_MBSTATE_T_H 2 | #define _PICOLIBC_BITS_TYPES_MBSTATE_T_H 3 | 4 | #include 5 | 6 | typedef _mbstate_t mbstate_t; 7 | 8 | #endif /* _PICOLIBC_BITS_TYPES_MBSTATE_T_H */ 9 | -------------------------------------------------------------------------------- /libraries/picolibc/cpio.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2016 Yaakov Selkowitz */ 2 | /* POSIX.1 symbolic constants for c_mode field of cpio archive format */ 3 | 4 | #ifndef _CPIO_H 5 | #define _CPIO_H 6 | 7 | #define C_IRUSR 0000400 /* Read by owner */ 8 | #define C_IWUSR 0000200 /* Write by owner */ 9 | #define C_IXUSR 0000100 /* Execute by owner */ 10 | #define C_IRGRP 0000040 /* Read by group */ 11 | #define C_IWGRP 0000020 /* Write by group */ 12 | #define C_IXGRP 0000010 /* Execute by group */ 13 | #define C_IROTH 0000004 /* Read by others */ 14 | #define C_IWOTH 0000002 /* Write by others */ 15 | #define C_IXOTH 0000001 /* Execute by others */ 16 | #define C_ISUID 0004000 /* Set user ID */ 17 | #define C_ISGID 0002000 /* Set group ID */ 18 | #define C_ISVTX 0001000 /* On directories, restricted deletion flag */ 19 | 20 | #define C_ISDIR 0040000 /* Directory */ 21 | #define C_ISFIFO 0010000 /* FIFO */ 22 | #define C_ISREG 0100000 /* Regular file */ 23 | #define C_ISBLK 0060000 /* Block special */ 24 | #define C_ISCHR 0020000 /* Character special */ 25 | #define C_ISCTG 0110000 /* Reserved */ 26 | #define C_ISLNK 0120000 /* Symbolic link */ 27 | #define C_ISSOCK 0140000 /* Socket */ 28 | 29 | #define MAGIC "070707" 30 | 31 | #endif /* _CPIO_H */ 32 | -------------------------------------------------------------------------------- /libraries/picolibc/crt0-hosted.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/libraries/picolibc/crt0-hosted.o -------------------------------------------------------------------------------- /libraries/picolibc/crt0.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/libraries/picolibc/crt0.o -------------------------------------------------------------------------------- /libraries/picolibc/envlock.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 1992, 1993 3 | The Regents of the University of California. All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 1. Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | 2. Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | 4. Neither the name of the University nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 18 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 21 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23 | OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 | OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 | SUCH DAMAGE. 28 | */ 29 | /* envlock.h -- header file for env routines. */ 30 | 31 | #ifndef _INCLUDE_ENVLOCK_H_ 32 | #define _INCLUDE_ENVLOCK_H_ 33 | 34 | #include <_ansi.h> 35 | #include 36 | 37 | #define ENV_LOCK __LIBC_LOCK() 38 | #define ENV_UNLOCK __LIBC_UNLOCK() 39 | 40 | #endif /* _INCLUDE_ENVLOCK_H_ */ 41 | -------------------------------------------------------------------------------- /libraries/picolibc/envz.h: -------------------------------------------------------------------------------- 1 | /* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. 2 | * 3 | * Permission to use, copy, modify, and distribute this software 4 | * is freely granted, provided that this notice is preserved. 5 | */ 6 | 7 | #include 8 | #include 9 | 10 | /* The newlib implementation of these functions assumes that sizeof(char) == 1. */ 11 | char * envz_entry (const char *envz, size_t envz_len, const char *name); 12 | char * envz_get (const char *envz, size_t envz_len, const char *name); 13 | error_t envz_add (char **envz, size_t *envz_len, const char *name, const char *value); 14 | error_t envz_merge (char **envz, size_t *envz_len, const char *envz2, size_t envz2_len, int override); 15 | void envz_remove(char **envz, size_t *envz_len, const char *name); 16 | void envz_strip (char **envz, size_t *envz_len); 17 | -------------------------------------------------------------------------------- /libraries/picolibc/libc.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/libraries/picolibc/libc.a -------------------------------------------------------------------------------- /libraries/picolibc/libgen.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2005 Jeff Johnston */ 2 | /* 3 | * libgen.h - defined by XPG4 4 | */ 5 | 6 | #ifndef _LIBGEN_H_ 7 | #define _LIBGEN_H_ 8 | 9 | #include "_ansi.h" 10 | #include 11 | 12 | #ifdef __cplusplus 13 | extern "C" { 14 | #endif 15 | 16 | /* There are two common basename variants. If you do NOT #include 17 | and you do 18 | 19 | #define _GNU_SOURCE 20 | #include 21 | 22 | you get the GNU version. Otherwise you get the POSIX versionfor which you 23 | should #include i for the function prototype. POSIX requires that 24 | #undef basename will still let you invoke the underlying function. However, 25 | this also implies that the POSIX version is used in this case. That's made 26 | sure here. */ 27 | #undef basename 28 | #define basename __xpg_basename 29 | char *basename (char *) __asm__(__ASMNAME("basename")); 30 | char *dirname (char *); 31 | 32 | #ifdef __cplusplus 33 | } 34 | #endif 35 | 36 | #endif /* _LIBGEN_H_ */ 37 | 38 | -------------------------------------------------------------------------------- /libraries/picolibc/machine/_arc4random.h: -------------------------------------------------------------------------------- 1 | /* $OpenBSD: arc4random.c,v 1.52 2015/01/16 16:48:51 deraadt Exp $ */ 2 | 3 | /* 4 | * Copyright (c) 1996, David Mazieres 5 | * Copyright (c) 2008, Damien Miller 6 | * Copyright (c) 2013, Markus Friedl 7 | * Copyright (c) 2014, Theo de Raadt 8 | * 9 | * Permission to use, copy, modify, and distribute this software for any 10 | * purpose with or without fee is hereby granted, provided that the above 11 | * copyright notice and this permission notice appear in all copies. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 14 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 15 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 16 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 17 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 18 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 19 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 20 | */ 21 | 22 | 23 | /* Use default implementation, see arc4random.h */ 24 | -------------------------------------------------------------------------------- /libraries/picolibc/machine/_endian.h: -------------------------------------------------------------------------------- 1 | /* ARM configuration file. 2 | Copyright (c) 2015 ARM Ltd. All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions 6 | are met: 7 | 1. Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | 2. Redistributions in binary form must reproduce the above copyright 10 | notice, this list of conditions and the following disclaimer in the 11 | documentation and/or other materials provided with the distribution. 12 | 3. The name of the company may not be used to endorse or promote 13 | products derived from this software without specific prior written 14 | permission. 15 | 16 | THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED 17 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19 | IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 20 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 21 | TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 22 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 23 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 24 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ 26 | 27 | #ifndef __MACHINE_ENDIAN_H__ 28 | #error "must be included via " 29 | #endif /* !__MACHINE_ENDIAN_H__ */ 30 | 31 | #define _LITTLE_ENDIAN 1234 32 | #define _BIG_ENDIAN 4321 33 | #define _PDP_ENDIAN 3412 34 | 35 | #ifdef __ARMEB__ 36 | #define _BYTE_ORDER _BIG_ENDIAN 37 | #else 38 | #define _BYTE_ORDER _LITTLE_ENDIAN 39 | #endif 40 | -------------------------------------------------------------------------------- /libraries/picolibc/machine/_time.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2016 Sebastian Huber */ 2 | #ifndef _SYS_TIME_H_ 3 | #error "must be included via " 4 | #endif /* !_SYS_TIME_H_ */ 5 | -------------------------------------------------------------------------------- /libraries/picolibc/machine/_types.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2005 Ralf Corsepious 3 | */ 4 | 5 | #ifndef _MACHINE__TYPES_H 6 | #define _MACHINE__TYPES_H 7 | #include 8 | #endif 9 | -------------------------------------------------------------------------------- /libraries/picolibc/machine/ansi.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2001 Jeff Johnston */ 2 | /* dummy header file to support BSD compiler */ 3 | -------------------------------------------------------------------------------- /libraries/picolibc/machine/malloc.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2002 Jeff Johnston */ 2 | #ifndef _MACHMALLOC_H_ 3 | #define _MACHMALLOC_H_ 4 | 5 | /* place holder so platforms may add malloc.h extensions */ 6 | 7 | #endif /* _MACHMALLOC_H_ */ 8 | 9 | 10 | -------------------------------------------------------------------------------- /libraries/picolibc/machine/param.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2004 Jeff Johnston */ 2 | /* ARM configuration file; HZ is 100 rather than the default 60 */ 3 | 4 | #ifndef _MACHINE_PARAM_H 5 | # define _MACHINE_PARAM_H 6 | 7 | # define HZ (100) 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /libraries/picolibc/machine/setjmp-dj.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 1991 DJ Delorie 3 | * All rights reserved. 4 | * 5 | * Redistribution, modification, and use in source and binary forms is permitted 6 | * provided that the above copyright notice and following paragraph are 7 | * duplicated in all such forms. 8 | * 9 | * This file is distributed WITHOUT ANY WARRANTY; without even the implied 10 | * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | */ 12 | 13 | /* Modified to use SETJMP_DJ_H rather than SETJMP_H to avoid 14 | conflicting with setjmp.h. Ian Taylor, Cygnus support, April, 15 | 1993. */ 16 | 17 | #ifndef _SETJMP_DJ_H_ 18 | #define _SETJMP_DJ_H_ 19 | 20 | #ifdef __cplusplus 21 | extern "C" { 22 | #endif 23 | 24 | typedef struct { 25 | unsigned long eax; 26 | unsigned long ebx; 27 | unsigned long ecx; 28 | unsigned long edx; 29 | unsigned long esi; 30 | unsigned long edi; 31 | unsigned long ebp; 32 | unsigned long esp; 33 | unsigned long eip; 34 | } jmp_buf[1]; 35 | 36 | extern int setjmp(jmp_buf); 37 | extern void longjmp(jmp_buf, int); 38 | 39 | #ifdef __cplusplus 40 | } 41 | #endif 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /libraries/picolibc/machine/stdlib.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2002 Jeff Johnston */ 2 | #ifndef _MACHSTDLIB_H_ 3 | #define _MACHSTDLIB_H_ 4 | 5 | /* place holder so platforms may add stdlib.h extensions */ 6 | 7 | #endif /* _MACHSTDLIB_H_ */ 8 | 9 | 10 | -------------------------------------------------------------------------------- /libraries/picolibc/machine/termios.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2002 Jeff Johnston */ 2 | #define __MAX_BAUD B4000000 3 | -------------------------------------------------------------------------------- /libraries/picolibc/machine/time.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 1991 DJ Delorie 3 | All rights reserved. 4 | 5 | Redistribution, modification, and use in source and binary forms is permitted 6 | provided that the above copyright notice and following paragraph are 7 | duplicated in all such forms. 8 | 9 | This file is distributed WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | */ 12 | #ifndef _MACHTIME_H_ 13 | #define _MACHTIME_H_ 14 | 15 | #if defined(__rtems__) || defined(__VISIUM__) || defined(__riscv) 16 | #define _CLOCKS_PER_SEC_ 1000000 17 | #elif defined(__aarch64__) || defined(__arm__) || defined(__thumb__) 18 | #define _CLOCKS_PER_SEC_ 100 19 | #endif 20 | 21 | #ifdef __SPU__ 22 | #include 23 | int nanosleep (const struct timespec *, struct timespec *); 24 | #endif 25 | 26 | #endif /* _MACHTIME_H_ */ 27 | -------------------------------------------------------------------------------- /libraries/picolibc/machine/types.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 1991 DJ Delorie 3 | All rights reserved. 4 | 5 | Redistribution, modification, and use in source and binary forms is permitted 6 | provided that the above copyright notice and following paragraph are 7 | duplicated in all such forms. 8 | 9 | This file is distributed WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | */ 12 | /* 13 | * Newlib targets may provide an own version of this file in their machine 14 | * directory to add custom user types for . 15 | */ 16 | #ifndef _SYS_TYPES_H 17 | #error "must be included via " 18 | #endif /* !_SYS_TYPES_H */ 19 | 20 | #if defined(__XMK__) && defined(___int64_t_defined) 21 | typedef __uint64_t u_quad_t; 22 | typedef __int64_t quad_t; 23 | typedef quad_t * qaddr_t; 24 | #endif 25 | -------------------------------------------------------------------------------- /libraries/picolibc/memory.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2016 Sebastian Huber */ 2 | #ifndef _MEMORY_H 3 | #define _MEMORY_H 4 | #include 5 | #endif /* !_MEMORY_H */ 6 | -------------------------------------------------------------------------------- /libraries/picolibc/newlib.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-License-Identifier: BSD-3-Clause 3 | * 4 | * Copyright © 2019 Keith Packard 5 | * 6 | * Redistribution and use in source and binary forms, with or without 7 | * modification, are permitted provided that the following conditions 8 | * are met: 9 | * 10 | * 1. Redistributions of source code must retain the above copyright 11 | * notice, this list of conditions and the following disclaimer. 12 | * 13 | * 2. Redistributions in binary form must reproduce the above 14 | * copyright notice, this list of conditions and the following 15 | * disclaimer in the documentation and/or other materials provided 16 | * with the distribution. 17 | * 18 | * 3. Neither the name of the copyright holder nor the names of its 19 | * contributors may be used to endorse or promote products derived 20 | * from this software without specific prior written permission. 21 | * 22 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 23 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 24 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 25 | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 26 | * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 27 | * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 28 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 29 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 31 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 32 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 33 | * OF THE POSSIBILITY OF SUCH DAMAGE. 34 | */ 35 | #include 36 | -------------------------------------------------------------------------------- /libraries/picolibc/ssp/stdlib.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2017 Yaakov Selkowitz */ 2 | #ifndef _SSP_STDLIB_H_ 3 | #define _SSP_STDLIB_H_ 4 | 5 | #include 6 | 7 | #if __SSP_FORTIFY_LEVEL > 0 8 | __BEGIN_DECLS 9 | 10 | __ssp_decl(size_t, mbstowcs, (wchar_t *__buf, const char *__src, size_t __n)) 11 | { 12 | if (__buf != NULL) 13 | __ssp_check(__buf, __n * sizeof(wchar_t), __ssp_bos); 14 | return __ssp_real_mbstowcs (__buf, __src, __n); 15 | } 16 | 17 | __ssp_redirect_raw(size_t, wcstombs, \ 18 | (char *__buf, const wchar_t *__src, size_t __len), \ 19 | (__buf, __src, __len), __buf != NULL, __ssp_bos); 20 | 21 | __ssp_decl(int, wctomb, (char *__buf, wchar_t __wc)) 22 | { 23 | if (__buf != NULL) 24 | __ssp_check(__buf, MB_CUR_MAX, __ssp_bos); 25 | return __ssp_real_wctomb (__buf, __wc); 26 | } 27 | 28 | __END_DECLS 29 | 30 | #endif /* __SSP_FORTIFY_LEVEL > 0 */ 31 | #endif /* _SSP_STDLIB_H_ */ 32 | -------------------------------------------------------------------------------- /libraries/picolibc/sys/_locale.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2016 Corinna Vinschen */ 2 | /* Definition of opaque POSIX-1.2008 type locale_t for userspace. */ 3 | 4 | #ifndef _SYS__LOCALE_H 5 | #define _SYS__LOCALE_H 6 | 7 | #include 8 | #include 9 | 10 | struct __locale_t; 11 | typedef struct __locale_t *locale_t; 12 | 13 | #endif /* _SYS__LOCALE_H */ 14 | -------------------------------------------------------------------------------- /libraries/picolibc/sys/_tz_structs.h: -------------------------------------------------------------------------------- 1 | #ifndef _SYS__TZ_STRUCTS_H_ 2 | #define _SYS__TZ_STRUCTS_H_ 3 | 4 | typedef struct __tzrule_struct 5 | { 6 | char ch; 7 | int m; /* Month of year if ch=M */ 8 | int n; /* Week of month if ch=M */ 9 | int d; /* Day of week if ch=M, day of year if ch=J or ch=D */ 10 | int s; /* Time of day in seconds */ 11 | time_t change; 12 | long offset; /* Match type of _timezone. */ 13 | } __tzrule_type; 14 | 15 | typedef struct __tzinfo_struct 16 | { 17 | int __tznorth; 18 | int __tzyear; 19 | __tzrule_type __tzrule[2]; 20 | } __tzinfo_type; 21 | 22 | __tzinfo_type *__gettzinfo (void); 23 | 24 | #endif /* _SYS__TZ_STRUCTS_H_ */ 25 | -------------------------------------------------------------------------------- /libraries/picolibc/sys/custom_file.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Jeff Johnston */ 2 | #error System-specific custom_file.h is missing. 3 | 4 | -------------------------------------------------------------------------------- /libraries/picolibc/sys/dir.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010 Yaakov Selkowitz */ 2 | /* BSD predecessor of POSIX.1 and struct dirent */ 3 | 4 | #ifndef _SYS_DIR_H_ 5 | #define _SYS_DIR_H_ 6 | 7 | #include 8 | 9 | #define direct dirent 10 | 11 | #endif /*_SYS_DIR_H_*/ 12 | -------------------------------------------------------------------------------- /libraries/picolibc/sys/fcntl.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 1982, 1986, 1993 3 | The Regents of the University of California. All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 1. Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | 2. Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | 3. Neither the name of the University nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 18 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 21 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23 | OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 | OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 | SUCH DAMAGE. 28 | */ 29 | #ifndef _SYS_FCNTL_H_ 30 | #define _SYS_FCNTL_H_ 31 | #include 32 | #endif 33 | -------------------------------------------------------------------------------- /libraries/picolibc/sys/file.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 1982, 1986, 1993 3 | The Regents of the University of California. All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 1. Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | 2. Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | 3. Neither the name of the University nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 18 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 21 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23 | OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 | OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 | SUCH DAMAGE. 28 | */ 29 | 30 | #include 31 | -------------------------------------------------------------------------------- /libraries/picolibc/sys/string.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2005 Jeff Johnston */ 2 | /* This is a dummy used as a placeholder for 3 | systems that need to have a special header file. */ 4 | -------------------------------------------------------------------------------- /libraries/picolibc/tar.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Ralf Corsepius */ 2 | /* 3 | * tar.h 4 | */ 5 | 6 | #ifndef _TAR_H 7 | #define _TAR_H 8 | 9 | #include 10 | 11 | /* General definitions */ 12 | #define TMAGIC "ustar" /* ustar plus null byte. */ 13 | #define TMAGLEN 6 /* Length of the above. */ 14 | #define TVERSION "00" /* 00 without a null byte. */ 15 | #define TVERSLEN 2 /* Length of the above. */ 16 | 17 | /* Typeflag field definitions */ 18 | #define REGTYPE '0' /* Regular file. */ 19 | #define AREGTYPE '\0' /* Regular file. */ 20 | #define LNKTYPE '1' /* Link. */ 21 | #define SYMTYPE '2' /* Symbolic link. */ 22 | #define CHRTYPE '3' /* Character special. */ 23 | #define BLKTYPE '4' /* Block special. */ 24 | #define DIRTYPE '5' /* Directory. */ 25 | #define FIFOTYPE '6' /* FIFO special. */ 26 | #define CONTTYPE '7' /* Reserved. */ 27 | 28 | /* Mode field bit definitions (octal) */ 29 | #define TSUID 04000 /* Set UID on execution. */ 30 | #define TSGID 02000 /* Set GID on execution. */ 31 | #if __XSI_VISIBLE || __POSIX_VISIBLE < 200112 32 | #define TSVTX 01000 /* On directories, restricted deletion flag. */ 33 | #endif 34 | #define TUREAD 00400 /* Read by owner. */ 35 | #define TUWRITE 00200 /* Write by owner. */ 36 | #define TUEXEC 00100 /* Execute/search by owner. */ 37 | #define TGREAD 00040 /* Read by group. */ 38 | #define TGWRITE 00020 /* Write by group. */ 39 | #define TGEXEC 00010 /* Execute/search by group. */ 40 | #define TOREAD 00004 /* Read by other. */ 41 | #define TOWRITE 00002 /* Write by other. */ 42 | #define TOEXEC 00001 /* Execute/search by other. */ 43 | 44 | #endif 45 | -------------------------------------------------------------------------------- /libraries/picolibc/wordexp.h: -------------------------------------------------------------------------------- 1 | /* Copyright (C) 2002, 2010 by Red Hat, Incorporated. All rights reserved. 2 | * 3 | * Permission to use, copy, modify, and distribute this software 4 | * is freely granted, provided that this notice is preserved. 5 | */ 6 | 7 | #ifndef _WORDEXP_H_ 8 | #define _WORDEXP_H_ 9 | 10 | #include 11 | 12 | #ifdef __cplusplus 13 | extern "C" { 14 | #endif 15 | 16 | struct _wordexp_t 17 | { 18 | size_t we_wordc; /* Count of words matched by words. */ 19 | char **we_wordv; /* Pointer to list of expanded words. */ 20 | size_t we_offs; /* Slots to reserve at the beginning of we_wordv. */ 21 | }; 22 | 23 | typedef struct _wordexp_t wordexp_t; 24 | 25 | #define WRDE_DOOFFS 0x0001 /* Use we_offs. */ 26 | #define WRDE_APPEND 0x0002 /* Append to output from previous call. */ 27 | #define WRDE_NOCMD 0x0004 /* Don't perform command substitution. */ 28 | #define WRDE_REUSE 0x0008 /* pwordexp points to a wordexp_t struct returned from 29 | a previous successful call to wordexp. */ 30 | #define WRDE_SHOWERR 0x0010 /* Print error messages to stderr. */ 31 | #define WRDE_UNDEF 0x0020 /* Report attempt to expand undefined shell variable. */ 32 | 33 | enum { 34 | WRDE_SUCCESS, 35 | WRDE_NOSPACE, 36 | WRDE_BADCHAR, 37 | WRDE_BADVAL, 38 | WRDE_CMDSUB, 39 | WRDE_SYNTAX, 40 | WRDE_NOSYS 41 | }; 42 | 43 | /* Note: This implementation of wordexp requires a version of bash 44 | that supports the --wordexp and --protected arguments to be present 45 | on the system. It does not support the WRDE_UNDEF flag. */ 46 | int wordexp(const char *__restrict, wordexp_t *__restrict, int); 47 | void wordfree(wordexp_t *); 48 | 49 | #ifdef __cplusplus 50 | } 51 | #endif 52 | 53 | #endif /* _WORDEXP_H_ */ 54 | -------------------------------------------------------------------------------- /source/application/bluetooth.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is a part of: https://github.com/brilliantlabsAR/frame-codebase 3 | * 4 | * Authored by: Raj Nakarja / Brilliant Labs Ltd. (raj@brilliant.xyz) 5 | * Rohit Rathnam / Silicon Witchery AB (rohit@siliconwitchery.com) 6 | * Uma S. Gupta / Techno Exponent (umasankar@technoexponent.com) 7 | * 8 | * ISC Licence 9 | * 10 | * Copyright © 2023 Brilliant Labs Ltd. 11 | * 12 | * Permission to use, copy, modify, and/or distribute this software for any 13 | * purpose with or without fee is hereby granted, provided that the above 14 | * copyright notice and this permission notice appear in all copies. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 17 | * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 18 | * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 19 | * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 20 | * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 21 | * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 22 | * PERFORMANCE OF THIS SOFTWARE. 23 | */ 24 | 25 | #pragma once 26 | 27 | #include 28 | #include 29 | #include 30 | 31 | #define BLE_PREFERRED_MAX_MTU 247 32 | extern uint16_t ble_negotiated_mtu; 33 | 34 | void bluetooth_setup(void); 35 | 36 | bool bluetooth_is_paired(void); 37 | 38 | void bluetooth_unpair(void); 39 | 40 | bool bluetooth_is_connected(void); 41 | 42 | bool bluetooth_send_data(const uint8_t *data, size_t length); -------------------------------------------------------------------------------- /source/application/compression.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is a part of: https://github.com/brilliantlabsAR/frame-codebase 3 | * 4 | * Authored by: Raj Nakarja / Brilliant Labs Ltd. (raj@brilliant.xyz) 5 | * Rohit Rathnam / Silicon Witchery AB (rohit@siliconwitchery.com) 6 | * Uma S. Gupta / Techno Exponent (umasankar@technoexponent.com) 7 | * 8 | * ISC Licence 9 | * 10 | * Copyright © 2023 Brilliant Labs Ltd. 11 | * 12 | * Permission to use, copy, modify, and/or distribute this software for any 13 | * purpose with or without fee is hereby granted, provided that the above 14 | * copyright notice and this permission notice appear in all copies. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 17 | * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 18 | * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 19 | * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 20 | * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 21 | * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 22 | * PERFORMANCE OF THIS SOFTWARE. 23 | */ 24 | 25 | #pragma once 26 | 27 | #include 28 | 29 | typedef void (*process_function)(void *context, 30 | void *data, 31 | size_t data_size); 32 | 33 | int compression_decompress(size_t destination_size, 34 | const void *source, 35 | size_t source_size, 36 | process_function process_function, 37 | void *process_function_context); 38 | -------------------------------------------------------------------------------- /source/application/flash.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is a part of: https://github.com/brilliantlabsAR/frame-codebase 3 | * 4 | * Authored by: Raj Nakarja / Brilliant Labs Ltd. (raj@brilliant.xyz) 5 | * Rohit Rathnam / Silicon Witchery AB (rohit@siliconwitchery.com) 6 | * Uma S. Gupta / Techno Exponent (umasankar@technoexponent.com) 7 | * 8 | * ISC Licence 9 | * 10 | * Copyright © 2023 Brilliant Labs Ltd. 11 | * 12 | * Permission to use, copy, modify, and/or distribute this software for any 13 | * purpose with or without fee is hereby granted, provided that the above 14 | * copyright notice and this permission notice appear in all copies. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 17 | * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 18 | * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 19 | * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 20 | * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 21 | * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 22 | * PERFORMANCE OF THIS SOFTWARE. 23 | */ 24 | 25 | #pragma once 26 | 27 | #include 28 | #include 29 | #include 30 | 31 | void flash_event_handler(bool success); 32 | 33 | void flash_erase_page(uint32_t address); 34 | 35 | void flash_write(uint32_t address, const uint32_t *data, size_t length); 36 | 37 | void flash_wait_until_complete(void); 38 | 39 | void flash_get_info(size_t *page_size, size_t *total_size); 40 | 41 | uint32_t flash_base_address(void); -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0020.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0020.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0021.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0021.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0022.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0022.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0023.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0023.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0024.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0025.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0025.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0026.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0026.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0027.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0027.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0028.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0028.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0029.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0029.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+002A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+002A.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+002B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+002B.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+002C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+002C.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+002D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+002D.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+002E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+002E.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0030.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0030.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0031.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0031.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0032.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0032.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0033.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0033.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0034.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0034.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0035.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0035.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0036.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0036.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0037.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0037.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0038.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0038.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0039.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0039.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+003A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+003A.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+003B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+003B.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+003C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+003C.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+003D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+003D.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+003E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+003E.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+003F.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+003F.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0040.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0040.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0041.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0041.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0042.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0042.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0043.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0043.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0044.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0044.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0045.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0045.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0046.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0046.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0047.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0047.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0048.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0048.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0049.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0049.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+004A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+004A.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+004B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+004B.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+004C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+004C.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+004D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+004D.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+004E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+004E.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+004F.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+004F.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0050.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0050.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0051.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0051.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0052.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0052.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0053.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0053.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0054.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0054.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0055.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0055.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0056.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0056.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0057.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0057.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0058.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0058.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0059.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0059.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+005A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+005A.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+005B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+005B.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+005C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+005C.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+005D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+005D.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+005E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+005E.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+005F.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+005F.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0060.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0060.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0061.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0061.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0062.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0062.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0063.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0063.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0064.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0064.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0065.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0065.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0066.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0066.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0067.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0067.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0068.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0068.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0069.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0069.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+006A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+006A.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+006B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+006B.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+006C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+006C.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+006D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+006D.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+006E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+006E.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+006F.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+006F.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0070.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0070.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0071.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0071.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0072.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0072.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0073.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0073.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0074.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0074.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0075.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0075.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0076.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0076.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0077.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0077.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0078.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0078.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0079.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0079.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+007A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+007A.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+007B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+007B.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+007C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+007C.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+007D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+007D.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+007E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+007E.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00A1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00A1.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00A2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00A2.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00A3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00A3.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00A5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00A5.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00A9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00A9.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00AB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00AB.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00AE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00AE.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00B0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00B0.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00B1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00B1.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00B5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00B5.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00B7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00B7.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00BB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00BB.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00BF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00BF.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00C0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00C0.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00C1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00C1.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00C2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00C2.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00C3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00C3.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00C4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00C4.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00C5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00C5.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00C6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00C6.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00C7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00C7.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00C8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00C8.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00C9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00C9.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00CA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00CA.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00CB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00CB.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00CC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00CC.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00CD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00CD.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00CE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00CE.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00CF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00CF.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00D0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00D0.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00D1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00D1.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00D2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00D2.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00D3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00D3.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00D4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00D4.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00D5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00D5.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00D6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00D6.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00D7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00D7.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00D8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00D8.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00D9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00D9.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00DA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00DA.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00DB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00DB.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00DC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00DC.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00DD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00DD.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00DE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00DE.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00DF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00DF.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00E0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00E0.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00E1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00E1.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00E2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00E2.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00E3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00E3.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00E4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00E4.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00E5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00E5.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00E6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00E6.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00E7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00E7.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00E8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00E8.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00E9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00E9.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00EA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00EA.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00EB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00EB.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00EC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00EC.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00ED.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00ED.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00EE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00EE.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00EF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00EF.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00F0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00F0.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00F1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00F1.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00F2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00F2.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00F3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00F3.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00F4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00F4.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00F5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00F5.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00F6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00F6.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00F7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00F7.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00F8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00F8.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00F9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00F9.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00FA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00FA.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00FB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00FB.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00FC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00FC.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00FD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00FD.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00FE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00FE.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+00FF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+00FF.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0131.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0131.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0141.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0141.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0142.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0142.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0152.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0153.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0153.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0160.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0160.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0161.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0161.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0178.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0178.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+017D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+017D.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+017E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+017E.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+0192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+0192.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+20AC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+20AC.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+F0000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+F0000.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+F0001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+F0001.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+F0002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+F0002.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+F0003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+F0003.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+F0004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+F0004.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+F0005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+F0005.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+F0006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+F0006.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+F0007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+F0007.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+F0008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+F0008.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+F0009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+F0009.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+F000A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+F000A.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+F000B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+F000B.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+F000C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+F000C.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+F000D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+F000D.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+F000E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+F000E.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+F000F.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+F000F.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/U+F0010.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/application/lua_libraries/graphical_assets/U+F0010.png -------------------------------------------------------------------------------- /source/application/lua_libraries/graphical_assets/readme.md: -------------------------------------------------------------------------------- 1 | # Graphical Assets 2 | 3 | This directory contains all of the graphical assets which come prebuilt into the Frame firmware. All of the `.png` files here are converted into `system_font.h` using the `create_sprites` tool which is a part of [`frameutils`](https://github.com/brilliantlabsAR/frame-utilities-for-python). 4 | 5 | Install `frameutils` using `pip`: 6 | 7 | ```sh 8 | pip3 install frameutils 9 | ``` 10 | 11 | Generate the font pack using the `create_sprites` command: 12 | 13 | ```sh 14 | frameutils create_sprites -c 2 --header source/application/lua_libraries/graphical_assets source/application/lua_libraries/graphical_assets/system_font.h 15 | ``` -------------------------------------------------------------------------------- /source/application/lua_libraries/version.c: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is a part of: https://github.com/brilliantlabsAR/frame-codebase 3 | * 4 | * Authored by: Raj Nakarja / Brilliant Labs Ltd. (raj@brilliant.xyz) 5 | * Rohit Rathnam / Silicon Witchery AB (rohit@siliconwitchery.com) 6 | * Uma S. Gupta / Techno Exponent (umasankar@technoexponent.com) 7 | * 8 | * ISC Licence 9 | * 10 | * Copyright © 2023 Brilliant Labs Ltd. 11 | * 12 | * Permission to use, copy, modify, and/or distribute this software for any 13 | * purpose with or without fee is hereby granted, provided that the above 14 | * copyright notice and this permission notice appear in all copies. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 17 | * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 18 | * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 19 | * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 20 | * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 21 | * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 22 | * PERFORMANCE OF THIS SOFTWARE. 23 | */ 24 | 25 | #include "lua.h" 26 | #include "main.h" 27 | 28 | void lua_open_version_library(lua_State *L) 29 | { 30 | lua_getglobal(L, "frame"); 31 | 32 | lua_pushstring(L, get_hardware_string()); 33 | lua_setfield(L, -2, "HARDWARE_VERSION"); 34 | 35 | lua_pushstring(L, BUILD_VERSION); 36 | lua_setfield(L, -2, "FIRMWARE_VERSION"); 37 | 38 | lua_pushstring(L, GIT_COMMIT); 39 | lua_setfield(L, -2, "GIT_TAG"); 40 | 41 | lua_pop(L, 1); 42 | } 43 | -------------------------------------------------------------------------------- /source/application/luaport.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is a part of: https://github.com/brilliantlabsAR/frame-codebase 3 | * 4 | * Authored by: Raj Nakarja / Brilliant Labs Ltd. (raj@brilliant.xyz) 5 | * Rohit Rathnam / Silicon Witchery AB (rohit@siliconwitchery.com) 6 | * Uma S. Gupta / Techno Exponent (umasankar@technoexponent.com) 7 | * 8 | * ISC Licence 9 | * 10 | * Copyright © 2023 Brilliant Labs Ltd. 11 | * 12 | * Permission to use, copy, modify, and/or distribute this software for any 13 | * purpose with or without fee is hereby granted, provided that the above 14 | * copyright notice and this permission notice appear in all copies. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 17 | * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 18 | * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 19 | * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 20 | * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 21 | * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 22 | * PERFORMANCE OF THIS SOFTWARE. 23 | */ 24 | 25 | #pragma once 26 | 27 | #include 28 | #include 29 | #include 30 | #include "bluetooth.h" 31 | #include "nrfx_log.h" 32 | #include "lua.h" 33 | #define lua_writestring(s, l) bluetooth_send_data((uint8_t *)s, l) 34 | #define lua_writeline() 35 | #define lua_writestringerror(s, p) printf(s, p) 36 | 37 | void lua_write_to_repl(uint8_t *buffer, uint8_t length); 38 | 39 | void lua_break_signal_interrupt(void); 40 | 41 | void run_lua(bool is_paired); 42 | 43 | int show_pairing_screen(bool is_paired, bool is_update); -------------------------------------------------------------------------------- /source/application/main.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is a part of: https://github.com/brilliantlabsAR/frame-codebase 3 | * 4 | * Authored by: Raj Nakarja / Brilliant Labs Ltd. (raj@brilliant.xyz) 5 | * Rohit Rathnam / Silicon Witchery AB (rohit@siliconwitchery.com) 6 | * Uma S. Gupta / Techno Exponent (umasankar@technoexponent.com) 7 | * 8 | * ISC Licence 9 | * 10 | * Copyright © 2023 Brilliant Labs Ltd. 11 | * 12 | * Permission to use, copy, modify, and/or distribute this software for any 13 | * purpose with or without fee is hereby granted, provided that the above 14 | * copyright notice and this permission notice appear in all copies. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 17 | * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 18 | * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 19 | * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 20 | * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 21 | * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 22 | * PERFORMANCE OF THIS SOFTWARE. 23 | */ 24 | 25 | #pragma once 26 | 27 | #include 28 | 29 | extern bool not_real_hardware; 30 | extern bool stay_awake; 31 | 32 | void shutdown(bool enable_imu_wakeup); 33 | 34 | const char *get_hardware_string(void); 35 | -------------------------------------------------------------------------------- /source/application/spi.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is a part of: https://github.com/brilliantlabsAR/frame-codebase 3 | * 4 | * Authored by: Raj Nakarja / Brilliant Labs Ltd. (raj@brilliant.xyz) 5 | * Rohit Rathnam / Silicon Witchery AB (rohit@siliconwitchery.com) 6 | * Uma S. Gupta / Techno Exponent (umasankar@technoexponent.com) 7 | * 8 | * ISC Licence 9 | * 10 | * Copyright © 2023 Brilliant Labs Ltd. 11 | * 12 | * Permission to use, copy, modify, and/or distribute this software for any 13 | * purpose with or without fee is hereby granted, provided that the above 14 | * copyright notice and this permission notice appear in all copies. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 17 | * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 18 | * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 19 | * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 20 | * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 21 | * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 22 | * PERFORMANCE OF THIS SOFTWARE. 23 | */ 24 | 25 | #pragma once 26 | 27 | #include 28 | #include 29 | 30 | typedef enum spi_device_t 31 | { 32 | DISPLAY, 33 | FPGA, 34 | } spi_device_t; 35 | 36 | void spi_configure(void); 37 | 38 | void spi_read(spi_device_t device, 39 | uint8_t address, 40 | uint8_t *data, 41 | size_t length); 42 | 43 | void spi_write(spi_device_t device, 44 | uint8_t address, 45 | uint8_t *data, 46 | size_t length); 47 | 48 | void spi_write_raw(spi_device_t device, 49 | uint8_t *data, 50 | size_t length); -------------------------------------------------------------------------------- /source/application/watchdog.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is a part of: https://github.com/brilliantlabsAR/frame-codebase 3 | * 4 | * Authored by: Raj Nakarja / Brilliant Labs Ltd. (raj@brilliant.xyz) 5 | * Rohit Rathnam / Silicon Witchery AB (rohit@siliconwitchery.com) 6 | * Uma S. Gupta / Techno Exponent (umasankar@technoexponent.com) 7 | * 8 | * ISC Licence 9 | * 10 | * Copyright © 2023 Brilliant Labs Ltd. 11 | * 12 | * Permission to use, copy, modify, and/or distribute this software for any 13 | * purpose with or without fee is hereby granted, provided that the above 14 | * copyright notice and this permission notice appear in all copies. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 17 | * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 18 | * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 19 | * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 20 | * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 21 | * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 22 | * PERFORMANCE OF THIS SOFTWARE. 23 | */ 24 | 25 | #pragma once 26 | 27 | #include "lua.h" 28 | 29 | void init_watchdog(void); 30 | void reload_watchdog(lua_State *L, lua_Debug *ar); 31 | void sethook_watchdog(lua_State *L); 32 | -------------------------------------------------------------------------------- /source/bootloader/dfu_private_key.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | MHcCAQEEIB6vw7uGrzfYqh5ST/8nIEWKRSAwKMpWyASnA4aivRjyoAoGCCqGSM49 3 | AwEHoUQDQgAEIVf52fQxDCP/qPZDN2FRqz798QZToyr7InOHOm3bGgqmnJUw/XUc 4 | Suws6dz8DQ/1IcQsrha5bdeHeLkXo+2qQw== 5 | -----END EC PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /source/bootloader/dfu_public_key.c: -------------------------------------------------------------------------------- 1 | 2 | /* This file was automatically generated by nrfutil on 2023-11-15 (YY-MM-DD) at 14:36:45 */ 3 | 4 | #include "stdint.h" 5 | #include "compiler_abstraction.h" 6 | 7 | /** @brief Public key used to verify DFU images */ 8 | __ALIGN(4) const uint8_t pk[64] = 9 | { 10 | 0x0a, 0x1a, 0xdb, 0x6d, 0x3a, 0x87, 0x73, 0x22, 0xfb, 0x2a, 0xa3, 0x53, 0x06, 0xf1, 0xfd, 0x3e, 0xab, 0x51, 0x61, 0x37, 0x43, 0xf6, 0xa8, 0xff, 0x23, 0x0c, 0x31, 0xf4, 0xd9, 0xf9, 0x57, 0x21, 11 | 0x43, 0xaa, 0xed, 0xa3, 0x17, 0xb9, 0x78, 0x87, 0xd7, 0x6d, 0xb9, 0x16, 0xae, 0x2c, 0xc4, 0x21, 0xf5, 0x0f, 0x0d, 0xfc, 0xdc, 0xe9, 0x2c, 0xec, 0x4a, 0x1c, 0x75, 0xfd, 0x30, 0x95, 0x9c, 0xa6 12 | }; 13 | -------------------------------------------------------------------------------- /source/bootloader/nrfx_config.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is a part of: https://github.com/brilliantlabsAR/frame-codebase 3 | * 4 | * Authored by: Raj Nakarja / Brilliant Labs Ltd. (raj@brilliant.xyz) 5 | * Rohit Rathnam / Silicon Witchery AB (rohit@siliconwitchery.com) 6 | * Uma S. Gupta / Techno Exponent (umasankar@technoexponent.com) 7 | * 8 | * ISC Licence 9 | * 10 | * Copyright © 2023 Brilliant Labs Ltd. 11 | * 12 | * Permission to use, copy, modify, and/or distribute this software for any 13 | * purpose with or without fee is hereby granted, provided that the above 14 | * copyright notice and this permission notice appear in all copies. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 17 | * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 18 | * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 19 | * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 20 | * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 21 | * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 22 | * PERFORMANCE OF THIS SOFTWARE. 23 | */ 24 | 25 | #pragma once 26 | 27 | #define NRFX_CONFIG_H__ 28 | #include "templates/nrfx_config_common.h" 29 | 30 | #include "templates/nrfx_config_nrf52840.h" 31 | -------------------------------------------------------------------------------- /source/error_logging.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is a part of: https://github.com/brilliantlabsAR/frame-codebase 3 | * 4 | * Authored by: Raj Nakarja / Brilliant Labs Ltd. (raj@brilliant.xyz) 5 | * Rohit Rathnam / Silicon Witchery AB (rohit@siliconwitchery.com) 6 | * Uma S. Gupta / Techno Exponent (umasankar@technoexponent.com) 7 | * 8 | * ISC Licence 9 | * 10 | * Copyright © 2023 Brilliant Labs Ltd. 11 | * 12 | * Permission to use, copy, modify, and/or distribute this software for any 13 | * purpose with or without fee is hereby granted, provided that the above 14 | * copyright notice and this permission notice appear in all copies. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 17 | * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 18 | * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 19 | * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 20 | * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 21 | * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 22 | * PERFORMANCE OF THIS SOFTWARE. 23 | */ 24 | 25 | #pragma once 26 | 27 | #include "nrfx.h" 28 | #include 29 | 30 | void _check_error(nrfx_err_t error_code, const char *file, const int line); 31 | 32 | void _error(const char *message, const char *file, const int line); 33 | 34 | #define check_error(error_code) \ 35 | _check_error(error_code, __FILE__, __LINE__) 36 | 37 | #define error() \ 38 | _error("", __FILE__, __LINE__) 39 | 40 | #define error_with_message(message) \ 41 | _error(" - " message, __FILE__, __LINE__) 42 | 43 | void HardFault_Handler(void) __attribute__((naked)); 44 | -------------------------------------------------------------------------------- /source/fpga/cocotb/.gitignore: -------------------------------------------------------------------------------- 1 | modelsim.ini 2 | transcript 3 | 4 | *.log 5 | 6 | *.vstf 7 | vsim.wlf 8 | 9 | *.fst 10 | *.fst.hier 11 | *.vcd 12 | sim_build 13 | __pycache__ 14 | 15 | results.xml 16 | -------------------------------------------------------------------------------- /source/fpga/cocotb/common/dumper.vh: -------------------------------------------------------------------------------- 1 | /* 2 | * Authored by: Robert Metchev / Chips & Scripts (rmetchev@ieee.org) 3 | * 4 | * CERN Open Hardware Licence Version 2 - Permissive 5 | * 6 | * Copyright (C) 2024 Robert Metchev 7 | */ 8 | initial if ($test$plusargs("DUMP")) begin 9 | $dumpfile("dump.vcd"); 10 | $dumpvars(); 11 | end 12 | -------------------------------------------------------------------------------- /source/fpga/cocotb/images/4.2.03.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/fpga/cocotb/images/4.2.03.tiff -------------------------------------------------------------------------------- /source/fpga/cocotb/images/4.2.03.tiff.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/fpga/cocotb/images/4.2.03.tiff.npy -------------------------------------------------------------------------------- /source/fpga/cocotb/images/4.2.07.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/fpga/cocotb/images/4.2.07.tiff -------------------------------------------------------------------------------- /source/fpga/cocotb/images/4.2.07.tiff.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/fpga/cocotb/images/4.2.07.tiff.npy -------------------------------------------------------------------------------- /source/fpga/cocotb/images/baboon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/fpga/cocotb/images/baboon.bmp -------------------------------------------------------------------------------- /source/fpga/cocotb/images/baboon.bmp.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/fpga/cocotb/images/baboon.bmp.npy -------------------------------------------------------------------------------- /source/fpga/cocotb/jed/.gitignore: -------------------------------------------------------------------------------- 1 | *.bin 2 | *.jpg 3 | *.jpeg 4 | bin/ 5 | -------------------------------------------------------------------------------- /source/fpga/cocotb/jed/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Authored by: Robert Metchev / Chips & Scripts (rmetchev@ieee.org) 3 | # 4 | # CERN Open Hardware Licence Version 2 - Permissive 5 | # 6 | # Copyright (C) 2024 Robert Metchev 7 | # 8 | 9 | all: 10 | @mkdir bin -p 11 | g++ --std=c++14 -O3 -o bin/header src/header.cpp 12 | 13 | clean: 14 | rm -f bin/header 15 | -------------------------------------------------------------------------------- /source/fpga/cocotb/jpeg_common/colorspace.py: -------------------------------------------------------------------------------- 1 | # 2 | # Authored by: Robert Metchev / Chips & Scripts (rmetchev@ieee.org) 3 | # 4 | # CERN Open Hardware Licence Version 2 - Permissive 5 | # 6 | # Copyright (C) 2024 Robert Metchev 7 | # 8 | 9 | import numpy as np 10 | 11 | def rgb2yuv(r, g, b): 12 | y = np.minimum(np.maximum(0, np.round( 0.299*r +0.587*g +0.114*b )), 255).astype(int) 13 | u = np.minimum(np.maximum(0, np.round((-0.299*r -0.587*g +0.886*b)/1.772 +128)), 255).astype(int) 14 | v = np.minimum(np.maximum(0, np.round(( 0.701*r -0.587*g -0.114*b)/1.402 +128)), 255).astype(int) 15 | return y, u, v 16 | 17 | def yuv2rgb(y, u, v): 18 | r = np.minimum(np.maximum(0, np.round(y +1.402*(v-128) )), 255).astype(int) 19 | g = np.minimum(np.maximum(0, np.round(y -(0.114*1.772*(u-128) +0.299*1.402*(v-128))/0.587)), 255).astype(int) 20 | b = np.minimum(np.maximum(0, np.round(y +1.772*(u-128) )), 255).astype(int) 21 | return r, g, b 22 | 23 | -------------------------------------------------------------------------------- /source/fpga/cocotb/jpeg_common/jcommon.py: -------------------------------------------------------------------------------- 1 | # 2 | # Authored by: Robert Metchev / Chips & Scripts (rmetchev@ieee.org) 3 | # 4 | # CERN Open Hardware Licence Version 2 - Permissive 5 | # 6 | # Copyright (C) 2024 Robert Metchev 7 | # 8 | 9 | import cocotb 10 | from cocotb.clock import Clock 11 | from cocotb.triggers import ClockCycles, RisingEdge, FallingEdge, Timer 12 | import numpy as np 13 | import sys, os 14 | 15 | np.set_printoptions(suppress=True, precision=3) 16 | 17 | 18 | def rmse(x,y): 19 | return np.sqrt(np.mean((x-y)**2)) 20 | 21 | def psnr(x,y): 22 | return 20*(np.log10(255) - np.log10(rmse(x,y) + sys.float_info.epsilon)) 23 | 24 | def u2s(x, bits): 25 | """Unsigned to signed converter""" 26 | n = 2**(bits - 1) 27 | return (x + n)%(2*n) - n 28 | 29 | 30 | async def clock_n_reset(dut): 31 | """36 MHz clock""" 32 | f = 36*10e6 # 36 MHz clock 33 | period = round(10e9/f,2) # in ns 34 | """Generate clock pulses.""" 35 | dut.resetn.value = 0 36 | cocotb.start_soon(Clock(dut.clk, period, units="ns").start()) 37 | await ClockCycles(dut.clk, 5) 38 | dut.resetn.value = 1 39 | 40 | 41 | async def finishn(dut, n): 42 | await ClockCycles(dut.clk, n) 43 | 44 | -------------------------------------------------------------------------------- /source/fpga/cocotb/tests/camera/.gitignore: -------------------------------------------------------------------------------- 1 | jpeg_out.jpg 2 | ecs_out.bin 3 | rgb_out.bmp 4 | rgb_out.bmp.npy 5 | rgb332_out.npy 6 | orig.bmp 7 | *.vstf 8 | vsim.wlf 9 | 10 | frame_frame_vo.sdf 11 | frame_frame_vo.vo 12 | frame_frame_vo.sdf_*.csd 13 | 14 | *.jpg 15 | *.fst 16 | *.vcd 17 | 18 | wlft* 19 | -------------------------------------------------------------------------------- /source/fpga/cocotb/tests/camera/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Authored by: Robert Metchev / Raumzeit Technologies (robert@raumzeit.co) 3 | # 4 | # CERN Open Hardware Licence Version 2 - Permissive 5 | # 6 | # Copyright (C) 2024 Robert Metchev 7 | # 8 | 9 | TEST_PATH := $(realpath .) 10 | TEST_TOP := camera_test 11 | 12 | # JPEG specific setup 13 | ifeq ($(IMG16X16),1) 14 | SENSOR_X_SIZE = 20 15 | SENSOR_Y_SIZE = 20 16 | IMAGE_X_SIZE = 16 17 | IMAGE_Y_SIZE = 16 18 | endif 19 | 20 | ifeq ($(IMG512X512),1) 21 | SENSOR_X_SIZE = 520 22 | SENSOR_Y_SIZE = 520 23 | IMAGE_X_SIZE = 512 24 | IMAGE_Y_SIZE = 512 25 | endif 26 | 27 | ifeq ($(IMG720X720),1) 28 | SENSOR_X_SIZE = 722 29 | SENSOR_Y_SIZE = 722 30 | IMAGE_X_SIZE = 720 31 | IMAGE_Y_SIZE = 720 32 | endif 33 | 34 | ifeq (1, $(filter 1, $(IMG16X16) $(IMG512X512) $(IMG720X720))) 35 | export SENSOR_X_SIZE := $(SENSOR_X_SIZE) 36 | export SENSOR_Y_SIZE := $(SENSOR_Y_SIZE) 37 | export IMAGE_X_SIZE := $(IMAGE_X_SIZE) 38 | export IMAGE_Y_SIZE := $(IMAGE_Y_SIZE) 39 | endif 40 | 41 | ifeq ($(SIM),icarus) 42 | COMPILE_ARGS += $(SENSOR_X_SIZE:%=-DSENSOR_X_SIZE=%) $(SENSOR_Y_SIZE:%=-DSENSOR_Y_SIZE=%) 43 | COMPILE_ARGS += $(IMAGE_X_SIZE:%=-DIMAGE_X_SIZE=%) $(IMAGE_Y_SIZE:%=-DIMAGE_Y_SIZE=%) 44 | COMPILE_ARGS += $(QF0:%=-DQF0=%) $(QF1:%=-DQF1=%) $(QF2:%=-DQF2=%) $(QF3:%=-DQF3=%) 45 | else # verilator + modelsim 46 | EXTRA_ARGS += $(SENSOR_X_SIZE:%=+define+SENSOR_X_SIZE=%) $(SENSOR_Y_SIZE:%=+define+SENSOR_Y_SIZE=%) 47 | EXTRA_ARGS += $(IMAGE_X_SIZE:%=+define+IMAGE_X_SIZE=%) $(IMAGE_Y_SIZE:%=+define+IMAGE_Y_SIZE=%) 48 | EXTRA_ARGS += $(QF0:%=+define+QF0=%) $(QF1:%=+define+QF1=%) $(QF2:%=+define+QF2=%) $(QF3:%=+define+QF3=%) 49 | endif 50 | 51 | 52 | 53 | 54 | 55 | include $(realpath ../../common/include.mk) 56 | 57 | -------------------------------------------------------------------------------- /source/fpga/cocotb/tests/graphics/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Authored by: Robert Metchev / Raumzeit Technologies (robert@raumzeit.co) 3 | # 4 | # CERN Open Hardware Licence Version 2 - Permissive 5 | # 6 | # Copyright (C) 2024 Robert Metchev 7 | # 8 | 9 | TEST_PATH := $(realpath .) 10 | TEST_TOP := graphics_test 11 | 12 | include $(realpath ../../common/include.mk) 13 | 14 | -------------------------------------------------------------------------------- /source/fpga/cocotb/tests/pll/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Authored by: Robert Metchev / Raumzeit Technologies (robert@raumzeit.co) 3 | # 4 | # CERN Open Hardware Licence Version 2 - Permissive 5 | # 6 | # Copyright (C) 2024 Robert Metchev 7 | # 8 | 9 | SHELL=/bin/bash 10 | # defaults 11 | SIM ?= modelsim 12 | export SIM := $(SIM) 13 | TOPLEVEL_LANG ?= verilog 14 | 15 | VERILOG_SOURCES += \ 16 | ./pll_tb.sv \ 17 | ../../../modules/camera/testbenches/csi/source/csi/pll_sim_ip/rtl/pll_sim_ip.v \ 18 | ../../../modules/pll/pll_wrapper.sv 19 | 20 | VERILOG_INCLUDE_DIRS += \ 21 | . ../../common 22 | 23 | MODULE := pll_test 24 | TOPLEVEL := pll_tb 25 | 26 | EXTRA_ARGS += \ 27 | -L lifcl -L ovi_lifcl -L pmi_work \ 28 | +DUMP 29 | 30 | export COCOTB_RESOLVE_X=ZEROS 31 | 32 | # include cocotb's make rules to take care of the simulator setup 33 | include $(shell cocotb-config --makefiles)/Makefile.sim 34 | 35 | clean:: 36 | rm -rf __pycache__ results.xml obj_dir 37 | rm -rf dump.vcd dump.vcd.fst dump.vcd.fst.hier 38 | rm -rf dump.fst dump.fst.hier 39 | rm -rf transcript modelsim.ini vsim.wlf vsim_stacktrace.vstf vish_stacktrace.vstf 40 | rm -rf frame_frame_vo.sdf_*.csd 41 | #make clean -C ../../testbenches/csi/source/csi/pll_sim_ip 42 | rm -rf f wlft* 43 | 44 | # From README: 45 | # 46 | # $> conda create -n py3_32 # use 'sudo conda' to make this a global rather than local environment 47 | # $> conda activate py3_32 48 | # $> conda config --env --set subdir linux-32 49 | # $> conda install python=3 gxx_linux-32 50 | # $> 51 | # $> pip install cocotb # uses pip from 32-bit Python environment 52 | # $> 53 | # $> make clean 54 | # $> make 55 | 56 | ifneq ($(CONDA_DEFAULT_ENV),py3_32) 57 | $(error Make sure you are in a 32-bit Python environment) 58 | endif 59 | -------------------------------------------------------------------------------- /source/fpga/cocotb/tests/pll/pll_tb.sv: -------------------------------------------------------------------------------- 1 | 2 | module pll_tb(); 3 | 4 | `include "dumper.vh" 5 | GSR GSR_INST (.GSR_N('1), .CLK('0)); 6 | 7 | // Clocking 8 | logic osc_clock; 9 | logic camera_clock; 10 | logic display_clock; 11 | logic spi_peripheral_clock; 12 | logic jpeg_buffer_clock; // 2x JPEG clock for transpose/zig-zag buffer overclocking - goes to JPEG 13 | logic camera_pixel_clock; 14 | 15 | logic pll_locked; 16 | logic pll_reset; 17 | logic pllpowerdown_n; 18 | logic sim_ip_pll_locked; 19 | 20 | OSCA #( 21 | .HF_CLK_DIV("24"), 22 | .HF_OSC_EN("ENABLED"), 23 | .LF_OUTPUT_EN("DISABLED") 24 | ) osc ( 25 | .HFOUTEN(1'b1), 26 | .HFCLKOUT(osc_clock) // f = (450 / (HF_CLK_DIV + 1)) ± 7% 27 | ); 28 | 29 | 30 | //always_comb pll_reset = 0; 31 | //always_comb pllpowerdown_n = 1; 32 | 33 | pll_wrapper pll_wrapper ( 34 | .clki_i(osc_clock), // 18MHz 35 | .rstn_i(pll_reset), 36 | .pllpowerdown_n(pllpowerdown_n), 37 | .clkop_o(camera_clock), // 24MHz 38 | .clkos_o(camera_pixel_clock), // 36MHz 39 | .clkos2_o(display_clock), // 36MHz 40 | .clkos3_o(spi_peripheral_clock), // 72MHz - remove 41 | .clkos4_o(jpeg_buffer_clock), // 78MHz - remove 42 | .lock_o(pll_locked) 43 | ); 44 | 45 | pll_sim_ip pll_sim_ip ( 46 | .clki_i(osc_clock), 47 | .clkop_o( ), 48 | .clkos_o( ), 49 | .clkos2_o( ), 50 | .clkos5_o( ), 51 | .lock_o(sim_ip_pll_locked) 52 | ); 53 | 54 | endmodule 55 | -------------------------------------------------------------------------------- /source/fpga/cocotb/tests/pll/pll_test.py: -------------------------------------------------------------------------------- 1 | # 2 | # Authored by: Robert Metchev / Raumzeit Technologies (robert@raumzeit.co) 3 | # 4 | # CERN Open Hardware Licence Version 2 - Permissive 5 | # 6 | # Copyright (C) 2024 Robert Metchev 7 | # 8 | import sys, os, time, random, logging 9 | import numpy as np 10 | 11 | import cocotb 12 | from cocotb.triggers import ClockCycles, RisingEdge, FallingEdge, Timer 13 | 14 | @cocotb.test() 15 | async def spi_test(dut): 16 | log_level = os.environ.get('LOG_LEVEL', 'INFO') # NOTSET=0 DEBUG=10 INFO=20 WARN=30 ERROR=40 CRITICAL=50 17 | dut._log.setLevel(log_level) 18 | 19 | dut.pllpowerdown_n = 1 20 | dut.pll_reset = 1 21 | await Timer(5, units='us') 22 | 23 | dut.pll_reset = 0 24 | await Timer(1, units='us') 25 | 26 | # Finish 27 | await Timer(1000, units='us') 28 | assert dut.pll_locked == 1, "No PLL lock" 29 | -------------------------------------------------------------------------------- /source/fpga/cocotb/tests/spi/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Authored by: Robert Metchev / Raumzeit Technologies (robert@raumzeit.co) 3 | # 4 | # CERN Open Hardware Licence Version 2 - Permissive 5 | # 6 | # Copyright (C) 2024 Robert Metchev 7 | # 8 | 9 | TEST_PATH := $(realpath .) 10 | TEST_TOP := spi_test 11 | 12 | include $(realpath ../../common/include.mk) 13 | 14 | -------------------------------------------------------------------------------- /source/fpga/modules/camera/jpeg_encoder/jlib/dp_ram.sv: -------------------------------------------------------------------------------- 1 | /* 2 | * Authored by: Robert Metchev / Chips & Scripts (rmetchev@ieee.org) 3 | * 4 | * CERN Open Hardware Licence Version 2 - Permissive 5 | * 6 | * Copyright (C) 2024 Robert Metchev 7 | */ 8 | module dp_ram #( 9 | parameter DW = 18, 10 | parameter DEPTH = 360 // in words 11 | )( 12 | input logic[DW-1:0] wd, 13 | input logic[$clog2(DEPTH)-1:0] wa, 14 | input logic we, 15 | output logic[DW-1:0] rd, 16 | input logic[$clog2(DEPTH)-1:0] ra, 17 | input logic re, 18 | input logic wclk, 19 | input logic rclk 20 | ); 21 | 22 | logic[DW-1:0] mem[0:DEPTH-1]; /* synthesis syn_ramstyle="Block_RAM" */ 23 | 24 | always @(posedge wclk) 25 | begin 26 | // write 27 | if (we) 28 | mem[wa] <= wd; 29 | end 30 | always @(posedge rclk) 31 | begin 32 | // read 33 | if (re) 34 | rd <= mem[ra]; 35 | end 36 | 37 | endmodule 38 | -------------------------------------------------------------------------------- /source/fpga/modules/camera/jpeg_encoder/jlib/dp_ram_be.sv: -------------------------------------------------------------------------------- 1 | /* 2 | * Authored by: Robert Metchev / Chips & Scripts (rmetchev@ieee.org) 3 | * 4 | * CERN Open Hardware Licence Version 2 - Permissive 5 | * 6 | * Copyright (C) 2024 Robert Metchev 7 | */ 8 | module dp_ram_be #( 9 | parameter DW = 64, 10 | parameter DEPTH = 2880 // in words 11 | )( 12 | input logic[DW-1:0] wd, 13 | input logic[$clog2(DEPTH)-1:0] wa, 14 | input logic we, 15 | input logic[(DW/8)-1:0] wbe, 16 | output logic[DW-1:0] rd, 17 | input logic[$clog2(DEPTH)-1:0] ra, 18 | input logic re, 19 | input logic wclk, 20 | input logic rclk 21 | ); 22 | 23 | logic[DW-1:0] mem[0:DEPTH-1]; /* synthesis syn_ramstyle="Block_RAM" */ 24 | 25 | always @(posedge wclk) 26 | begin 27 | // write 28 | for (int i=0; i<(DW/8); i++) 29 | if (we & wbe[i]) 30 | mem[wa][i*8 +: 8] <= wd[i*8 +: 8]; 31 | end 32 | always @(posedge rclk) 33 | begin 34 | // read 35 | if (re) 36 | rd <= mem[ra]; 37 | end 38 | 39 | endmodule 40 | -------------------------------------------------------------------------------- /source/fpga/modules/camera/jpeg_encoder/jlib/large_ram_dp_q.sv: -------------------------------------------------------------------------------- 1 | /* 2 | * Authored by: Robert Metchev / Chips & Scripts (rmetchev@ieee.org) 3 | * 4 | * CERN Open Hardware Licence Version 2 - Permissive 5 | * 6 | * Copyright (C) 2024 Robert Metchev 7 | */ 8 | module large_ram_dp_q ( 9 | input logic[31:0] wd, 10 | input logic[13:0] wa, 11 | input logic we, 12 | output logic[31:0] rd, 13 | input logic[13:0] ra, 14 | input logic clk 15 | ); 16 | 17 | logic[31:0] mem[0:16383]; /* synthesis syn_ramstyle="Block_RAM" */ 18 | logic[13:0] ra_i; 19 | always @(posedge clk) 20 | begin 21 | // write 22 | if (we) 23 | mem[wa] <= wd; 24 | end 25 | always @(posedge clk) 26 | begin 27 | // read - no read enable in this version, but register out 28 | // if (re) 29 | ra_i <= ra; 30 | rd <= mem[ra_i]; 31 | end 32 | 33 | endmodule 34 | -------------------------------------------------------------------------------- /source/fpga/modules/camera/jpeg_encoder/jlib/psync1.sv: -------------------------------------------------------------------------------- 1 | /* 2 | * Authored by: Robert Metchev / Chips & Scripts (rmetchev@ieee.org) 3 | * 4 | * CERN Open Hardware Licence Version 2 - Permissive 5 | * 6 | * Copyright (C) 2024 Robert Metchev 7 | */ 8 | 9 | // One-way pulse synchronizer for single isolated pulses, ie. no handshake/ack 10 | // assuming many clock cycles between pulses, either clock domain 11 | module psync1 ( 12 | input logic in, 13 | input logic in_clk, 14 | input logic in_reset_n, 15 | output logic out, 16 | input logic out_clk, 17 | input logic out_reset_n 18 | ); 19 | 20 | logic p; 21 | always @(posedge in_clk) 22 | if (!in_reset_n) p <= 0; 23 | else if (in) p <= ~p; 24 | 25 | logic [2:0] p_cdc; 26 | always @(posedge out_clk) 27 | if (!out_reset_n) p_cdc <= 0; 28 | else p_cdc <= {p_cdc, p}; 29 | 30 | always_comb out = ^p_cdc[2:1]; 31 | 32 | endmodule 33 | -------------------------------------------------------------------------------- /source/fpga/modules/camera/jpeg_encoder/jpeg_encoder.vh: -------------------------------------------------------------------------------- 1 | `ifndef __JPEG_ENCODER_VH__ 2 | `define __JPEG_ENCODER_VH__ 3 | 4 | // USE DSP Slice 5 | `define QUANTIZER_USE_DSP_MULT 6 | `define DCT_USE_DSP_MULT 7 | `define RGB2YUV_USE_DSP_MULT 8 | 9 | // 4 possible QF 10 | `ifndef QF0 11 | `define QF0 50 12 | `endif 13 | 14 | `ifndef QF1 15 | `define QF1 100 16 | `endif 17 | 18 | `ifndef QF2 19 | `define QF2 10 20 | `endif 21 | 22 | `ifndef QF3 23 | `define QF3 25 24 | `endif 25 | 26 | `endif // __JPEG_ENCODER_VH__ 27 | -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/csi/.gitignore: -------------------------------------------------------------------------------- 1 | # Modelsim 2 | transcript 3 | *.bak 4 | *.log 5 | *.html 6 | *.wlf 7 | *.mti 8 | *.tcr 9 | .build_status 10 | .synthesis_touch 11 | *.ini 12 | csi_tcr* 13 | .recovery 14 | *.bak 15 | 16 | work 17 | 18 | /source/csi/pll_sim_ip/* 19 | !/source/csi/pll_sim_ip/*.xml 20 | !/source/csi/pll_sim_ip/*.cfg 21 | !/source/csi/pll_sim_ip/*.ipx 22 | 23 | /source/csi/csi2_transmitter_ip/* 24 | !/source/csi/csi2_transmitter_ip/*.xml 25 | !/source/csi/csi2_transmitter_ip/*.cfg 26 | !/source/csi/csi2_transmitter_ip/*.ipx 27 | 28 | /source/csi/csi2_receiver_ip/* 29 | !/source/csi/csi2_receiver_ip/*.xml 30 | !/source/csi/csi2_receiver_ip/*.cfg 31 | !/source/csi/csi2_receiver_ip/*.ipx 32 | 33 | /source/csi/byte_to_pixel_ip/* 34 | !/source/csi/byte_to_pixel_ip/*.xml 35 | !/source/csi/byte_to_pixel_ip/*.cfg 36 | !/source/csi/byte_to_pixel_ip/*.ipx 37 | 38 | /source/csi/pixel_to_byte_ip/* 39 | !/source/csi/pixel_to_byte_ip/*.xml 40 | !/source/csi/pixel_to_byte_ip/*.cfg 41 | !/source/csi/pixel_to_byte_ip/*.ipx -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/csi/Makefile: -------------------------------------------------------------------------------- 1 | WORKDIR = work 2 | 3 | TOP = csi_tb 4 | SIM_SRCS += source/csi/csi_tb.sv 5 | 6 | SRCH_PATH = \ 7 | source/csi/reset.sv \ 8 | source/csi/image_gen.sv \ 9 | source/csi/pll_sim_ip/rtl/pll_sim_ip.v \ 10 | source/csi/pixel_to_byte_ip/rtl/pixel_to_byte_ip.v \ 11 | source/csi/csi2_transmitter_ip/rtl/csi2_transmitter_ip.v \ 12 | source/csi/byte_to_pixel_ip/rtl/byte_to_pixel_ip.v \ 13 | source/csi/csi2_receiver_ip/rtl/csi2_receiver_ip.v 14 | 15 | # vsim-8233 = array out of bounds, fix later 16 | VLOG_OPTS = -93 -sv -warning vlog-2388 -suppress 2388 -lint=full -pedanticerrors -fsmverbose w +libext+.v+.vl+.sv +libext+.sv $(SRCH_PATH) 17 | 18 | VSIM_OPTS = -warning vsim-3009 -t 100fs -voptargs="+acc" -L lifcl -L ovi_lifcl -L pmi_work \ 19 | -suppress vsim-7033,vsim-8630,3009,3389,vsim-8233 20 | 21 | .PHONY: compile sim clean 22 | 23 | all: clean compile sim 24 | 25 | compile: $(WORKDIR) $(SIM_SRCS) 26 | vlog $(VLOG_OPTS) $(SIM_SRCS) 27 | 28 | sim: 29 | vsim -gui $(VSIM_OPTS) work.$(TOP) 30 | 31 | $(WORKDIR): 32 | vlib work 33 | 34 | clean: 35 | rm -rf transcript $(WORKDIR) *.wlf wlf* *.tap *.hex -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/csi/csi.rdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/csi/csi/byte_to_pixel_ip.cprj: -------------------------------------------------------------------------------- 1 | -ver "/opt/lscc/radiant/2023.2/ip/pmi/pmi_lifcl.v" 2 | -lib pmi -vhd "/opt/lscc/radiant/2023.2/ip/pmi/pmi_lifcl.vhd" 3 | -ver "/home/rohit/Documents/csi/source/csi/byte_to_pixel_ip/rtl/byte_to_pixel_ip.v" 4 | -sdc "/home/rohit/Documents/csi/source/csi/byte_to_pixel_ip/constraints/byte_to_pixel_ip.ldc" 5 | -path "/home/rohit/Documents/csi/source/csi/byte_to_pixel_ip" "/home/rohit/Documents/csi" 6 | -top byte_to_pixel_ip 7 | -a "LIFCL" 8 | -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/csi/csi/csi2_receiver_ip.cprj: -------------------------------------------------------------------------------- 1 | -ver "/opt/lscc/radiant/2023.2/ip/pmi/pmi_lifcl.v" 2 | -lib pmi -vhd "/opt/lscc/radiant/2023.2/ip/pmi/pmi_lifcl.vhd" 3 | -ver "/home/rohit/Documents/csi/source/csi/csi2_receiver_ip/rtl/csi2_receiver_ip.v" 4 | -sdc "/home/rohit/Documents/csi/source/csi/csi2_receiver_ip/constraints/csi2_receiver_ip.ldc" 5 | -path "/home/rohit/Documents/csi/source/csi/csi2_receiver_ip" "/home/rohit/Documents/csi" 6 | -top csi2_receiver_ip 7 | -a "LIFCL" 8 | -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/csi/csi/csi2_transmitter_ip.cprj: -------------------------------------------------------------------------------- 1 | -ver "/opt/lscc/radiant/2023.2/ip/pmi/pmi_lifcl.v" 2 | -lib pmi -vhd "/opt/lscc/radiant/2023.2/ip/pmi/pmi_lifcl.vhd" 3 | -ver "/home/rohit/Documents/csi/source/csi/csi2_transmitter_ip/rtl/csi2_transmitter_ip.v" 4 | -sdc "/home/rohit/Documents/csi/source/csi/csi2_transmitter_ip/constraints/csi2_transmitter_ip.ldc" 5 | -path "/home/rohit/Documents/csi/source/csi/csi2_transmitter_ip" "/home/rohit/Documents/csi" 6 | -top csi2_transmitter_ip 7 | -a "LIFCL" 8 | -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/csi/csi/csi_csi.cprj: -------------------------------------------------------------------------------- 1 | -ver "/opt/lscc/radiant/2023.2/ip/pmi/pmi_lifcl.v" 2 | -lib pmi -vhd "/opt/lscc/radiant/2023.2/ip/pmi/pmi_lifcl.vhd" 3 | -sver "/home/rohit/Documents/csi/source/csi/csi_tb.sv" 4 | -path "/home/rohit/Documents/csi" 5 | -top csi_tb 6 | -isTop 7 | -a "LIFCL" 8 | -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/csi/csi/csi_csi_lattice.synproj: -------------------------------------------------------------------------------- 1 | -a "LIFCL" 2 | -p LIFCL-17 3 | -t WLCSP72 4 | -sp "8_Low-Power_1.0V" 5 | -frequency 200 6 | -optimization_goal Timing 7 | -bram_utilization 100 8 | -ramstyle Auto 9 | -romstyle auto 10 | -dsp_utilization 100 11 | -use_dsp 1 12 | -use_carry_chain 1 13 | -carry_chain_length 0 14 | -force_gsr No 15 | -resource_sharing 1 16 | -propagate_constants 1 17 | -remove_duplicate_regs 1 18 | 19 | -max_fanout 1000 20 | -fsm_encoding_style Auto 21 | 22 | -fix_gated_clocks 1 23 | -loop_limit 1950 24 | 25 | 26 | 27 | 28 | 29 | 30 | -use_io_reg auto 31 | 32 | 33 | 34 | 35 | 36 | 37 | -use_io_insertion 1 38 | -resolve_mixed_drivers 0 39 | -sdc "csi_csi_cpe.ldc" 40 | -path "/home/rohit/Documents/csi/source/csi/byte_to_pixel_ip" 41 | -path "/home/rohit/Documents/csi/source/csi/csi2_receiver_ip" 42 | -path "/home/rohit/Documents/csi/source/csi/csi2_transmitter_ip" 43 | -path "/home/rohit/Documents/csi/source/csi/pixel_to_byte_ip" 44 | -path "/home/rohit/Documents/csi/source/csi/pll_sim_ip" 45 | -path "/opt/lscc/radiant/2023.2/ispfpga/je5d00/data" "/home/rohit/Documents/csi/csi" "/home/rohit/Documents/csi" 46 | -ver "/opt/lscc/radiant/2023.2/ip/pmi/pmi_lifcl.v" 47 | -lib pmi -vhd "/opt/lscc/radiant/2023.2/ip/pmi/pmi_lifcl.vhd" 48 | -ver "/home/rohit/Documents/csi/source/csi/csi2_receiver_ip/rtl/csi2_receiver_ip.v" 49 | "/home/rohit/Documents/csi/source/csi/byte_to_pixel_ip/rtl/byte_to_pixel_ip.v" 50 | "/home/rohit/Documents/csi/source/csi/pll_sim_ip/rtl/pll_sim_ip.v" 51 | "/home/rohit/Documents/csi/source/csi/csi2_transmitter_ip/rtl/csi2_transmitter_ip.v" 52 | "/home/rohit/Documents/csi/source/csi/pixel_to_byte_ip/rtl/pixel_to_byte_ip.v" 53 | -sver "/home/rohit/Documents/csi/source/csi/csi_tb.sv" 54 | 55 | 56 | -path "/home/rohit/Documents/csi" 57 | -top csi_tb 58 | -udb "csi_csi_rtl.udb" 59 | -output_hdl "csi_csi.vm" 60 | 61 | -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/csi/csi/csi_csi_synthesize.tcl: -------------------------------------------------------------------------------- 1 | if {[catch { 2 | 3 | # define run engine funtion 4 | source [file join {/opt/lscc/radiant/2023.2} scripts tcl flow run_engine.tcl] 5 | # define global variables 6 | global para 7 | set para(gui_mode) 1 8 | set para(prj_dir) "/home/rohit/Documents/csi" 9 | # synthesize IPs 10 | # synthesize VMs 11 | # propgate constraints 12 | file delete -force -- csi_csi_cpe.ldc 13 | run_engine_newmsg cpe -f "csi_csi.cprj" "csi2_receiver_ip.cprj" "byte_to_pixel_ip.cprj" "pll_sim_ip.cprj" "csi2_transmitter_ip.cprj" "pixel_to_byte_ip.cprj" -a "LIFCL" -o csi_csi_cpe.ldc 14 | # synthesize top design 15 | file delete -force -- csi_csi.vm csi_csi.ldc 16 | run_engine_newmsg synthesis -f "csi_csi_lattice.synproj" 17 | run_postsyn [list -a LIFCL -p LIFCL-17 -t WLCSP72 -sp 8_Low-Power_1.0V -oc Commercial -top -w -o csi_csi_syn.udb csi_csi.vm] [list /home/rohit/Documents/csi/csi/csi_csi.ldc] 18 | 19 | } out]} { 20 | runtime_log $out 21 | exit 1 22 | } 23 | -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/csi/csi/message_log.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/csi/csi/pixel_to_byte_ip.cprj: -------------------------------------------------------------------------------- 1 | -ver "/opt/lscc/radiant/2023.2/ip/pmi/pmi_lifcl.v" 2 | -lib pmi -vhd "/opt/lscc/radiant/2023.2/ip/pmi/pmi_lifcl.vhd" 3 | -ver "/home/rohit/Documents/csi/source/csi/pixel_to_byte_ip/rtl/pixel_to_byte_ip.v" 4 | -sdc "/home/rohit/Documents/csi/source/csi/pixel_to_byte_ip/constraints/pixel_to_byte_ip.ldc" 5 | -path "/home/rohit/Documents/csi/source/csi/pixel_to_byte_ip" "/home/rohit/Documents/csi" 6 | -top pixel_to_byte_ip 7 | -a "LIFCL" 8 | -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/csi/csi/pll_sim_ip.cprj: -------------------------------------------------------------------------------- 1 | -ver "/opt/lscc/radiant/2023.2/ip/pmi/pmi_lifcl.v" 2 | -lib pmi -vhd "/opt/lscc/radiant/2023.2/ip/pmi/pmi_lifcl.vhd" 3 | -ver "/home/rohit/Documents/csi/source/csi/pll_sim_ip/rtl/pll_sim_ip.v" 4 | -sdc "/home/rohit/Documents/csi/source/csi/pll_sim_ip/constraints/pll_sim_ip.ldc" 5 | -path "/home/rohit/Documents/csi/source/csi/pll_sim_ip" "/home/rohit/Documents/csi" 6 | -top pll_sim_ip 7 | -a "LIFCL" 8 | -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/csi/promote.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/csi/reportview.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/csi/source/csi/byte_to_pixel_ip/byte_to_pixel_ip.cfg: -------------------------------------------------------------------------------- 1 | { 2 | "BYTE_CLK_FREQ": 45.0, 3 | "PIX_CLK_FREQ": 36.0, 4 | "FIFO_IMPL": "LUT", 5 | "WORD_CNT": 40, 6 | "DEBUG_EN": true 7 | } -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/csi/source/csi/csi2_receiver_ip/csi2_receiver_ip.cfg: -------------------------------------------------------------------------------- 1 | { 2 | "NUM_RX_LANE": 1, 3 | "RX_LINE_RATE": 360.0, 4 | "AXI4": false, 5 | "MISC_ON": false, 6 | "RX_FIFO_TYPE": "SINGLE", 7 | "RX_FIFO_IMPL": "LUT", 8 | "RX_FIFO_DEPTH": 16, 9 | "RX_FIFO_PKT_DLY": 1, 10 | "RX_FIFO_MISC": true 11 | } -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/csi/source/csi/csi2_transmitter_ip/csi2_transmitter_ip.cfg: -------------------------------------------------------------------------------- 1 | { 2 | "NUM_TX_LANE": 1, 3 | "FRAME_CNT_ENABLE": false, 4 | "TX_LINE_RATE_PER_LANE": 360.0, 5 | "CLK_MODE": "HS_ONLY", 6 | "REF_CLOCK_FREQ": 96.0, 7 | "MISC_ON": true, 8 | "USER_TIMING": true, 9 | "T_SKEWCAL_HSZERO_GUI": 3, 10 | "T_DAT_HSZERO_GUI": 1, 11 | "T_CLK_HSZERO_GUI": 35 12 | } -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/csi/source/csi/pixel_to_byte_ip/pixel_to_byte_ip.cfg: -------------------------------------------------------------------------------- 1 | { 2 | "DATA_TYPE": "RAW10", 3 | "PIX_CLK_FREQ": 36.0, 4 | "BYTE_CLK_FREQ": 45.0, 5 | "APB": "OFF", 6 | "WORD_CNT": 1610 7 | } -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/csi/source/csi/pll_sim_ip/.gitignore: -------------------------------------------------------------------------------- 1 | constraints 2 | misc 3 | rtl 4 | testbench 5 | -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/csi/source/csi/pll_sim_ip/Makefile: -------------------------------------------------------------------------------- 1 | IP := -ip /opt/lscc/radiant/2023.2/ip/lifcl/pll 2 | VLNV := -vlnv latticesemi.com:module:pll:1.8.0 3 | IPGEN_FLAGS := $(VLNV) -sp "8_Low-Power_1.0V" -t "WLCSP72" -f "LIFCL" -p "LIFCL-17" 4 | 5 | all: ./pll_sim_ip.ipx ./rtl/pll_sim_ip.v 6 | %.v %.ipx: 7 | ipgenwrap -cfg pll_sim_ip.cfg -name pll_sim_ip -o . $(IPGEN_FLAGS) 8 | 9 | clean: 10 | rm -rf $(filter-out Makefile pll_sim_ip.cfg pll_sim_ip.ipx component.xml design.xml,$(shell ls)) 11 | -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/csi/source/csi/pll_sim_ip/pll_sim_ip.cfg: -------------------------------------------------------------------------------- 1 | { 2 | "gui_refclk_freq": 18.0, 3 | "gui_fbk_mode": "CLKOS5", 4 | "gui_clk_op_freq": 36.0, 5 | "gui_clk_os_en": true, 6 | "gui_clk_os_freq": 72.0, 7 | "gui_clk_s2_en": true, 8 | "gui_clk_s2_freq": 96.0, 9 | "gui_clk_s3_en": false, 10 | "gui_clk_s5_freq": 144.0, 11 | "gui_en_pll_reset": false, 12 | "gui_pll_lock_sticky": true 13 | } -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/csi/source/csi/pll_sim_ip/pll_sim_ip.ipx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/debayer/test_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/fpga/modules/camera/testbenches/debayer/test_image.png -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/debayer/test_image_bayered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/fpga/modules/camera/testbenches/debayer/test_image_bayered.png -------------------------------------------------------------------------------- /source/fpga/modules/camera/testbenches/debayer/test_image_debayered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/991f40ab7b2ac301d1b701501f6173f699a07514/source/fpga/modules/camera/testbenches/debayer/test_image_debayered.png -------------------------------------------------------------------------------- /source/fpga/modules/camera/tools/gamma_table_generator_script.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | max_pixel = 256 # 256 for 8bit, 1024 for 10bit 4 | in_signal = np.arange(max_pixel) / (max_pixel - 1) 5 | out_signal_601 = (in_signal > 0.018) * (1.099 * in_signal**0.45 - 0.099) + ( 6 | in_signal <= 0.018 7 | ) * (4.5 * in_signal) 8 | out_lut = (out_signal_601 * (max_pixel - 1)).astype(int) 9 | 10 | for i in range(len(out_lut)): 11 | print( 12 | f"gamma_rom_r[{i}] = 'd{out_lut[i]}; gamma_rom_g[{i}] = 'd{out_lut[i]}; gamma_rom_b[{i}] = 'd{out_lut[i]};" 13 | ) 14 | -------------------------------------------------------------------------------- /source/fpga/modules/graphics/testbenches/README: -------------------------------------------------------------------------------- 1 | These tests were out of date, and are superceeded by cocotb tests. 2 | Last working commit at main if needed for reference: 3 | 4 | 5 | commit 7b3439064a332181ffa4445056b9710929be38b6 6 | Author: Raj Nakarja 7 | Date: Tue May 28 15:58:48 2024 +0200 8 | 9 | Updated graphics testbench 10 | -------------------------------------------------------------------------------- /source/fpga/modules/pll/clkswitch.v: -------------------------------------------------------------------------------- 1 | /* 2 | * Authored by: Robert Metchev / Chips & Scripts (rmetchev@ieee.org) 3 | * 4 | * CERN Open Hardware Licence Version 2 - Permissive 5 | * 6 | * Copyright (C) 2024 Robert Metchev 7 | */ 8 | 9 | // Dynamic clock switch 10 | // assuming many clock cycles between pulses, either clock domain 11 | 12 | module clkswitch( 13 | input logic i_clk_a, 14 | input logic i_clk_b, 15 | input logic i_areset_n, 16 | input logic i_sel, 17 | output logic o_clk 18 | ); 19 | 20 | logic [1:0] a_sel_reg, b_sel_reg; 21 | logic a_sel, b_sel; 22 | logic clk_a, clk_b; 23 | 24 | // Synchronizer for A 25 | always @(posedge i_clk_a or negedge i_areset_n) 26 | if (!i_areset_n) a_sel_reg <= 1; 27 | else a_sel_reg <= {a_sel_reg, ~i_sel & ~b_sel}; 28 | 29 | // Synchronizer for B 30 | always @(posedge i_clk_b or negedge i_areset_n) 31 | if (!i_areset_n) b_sel_reg <= 0; 32 | else b_sel_reg <= {b_sel_reg, i_sel & ~a_sel}; 33 | 34 | // Gate for A 35 | always_latch 36 | if (!i_clk_a) a_sel = a_sel_reg[1]; 37 | always_comb clk_a = a_sel & i_clk_a; 38 | 39 | // Gate for B 40 | always_latch 41 | if (!i_clk_b) b_sel = b_sel_reg[1]; 42 | always_comb clk_b = b_sel & i_clk_b; 43 | 44 | // Or 45 | always_comb o_clk = clk_a | clk_b; 46 | 47 | endmodule 48 | -------------------------------------------------------------------------------- /source/fpga/modules/reset/global_reset_sync.sv: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is a part of: https://github.com/brilliantlabsAR/frame-codebase 3 | * 4 | * Authored by: Rohit Rathnam / Silicon Witchery AB (rohit@siliconwitchery.com) 5 | * Raj Nakarja / Brilliant Labs Limited (raj@brilliant.xyz) 6 | * 7 | * CERN Open Hardware Licence Version 2 - Permissive 8 | * 9 | * Copyright © 2023 Brilliant Labs Limited 10 | */ 11 | 12 | module global_reset_sync ( 13 | input logic clock_in, 14 | input logic pll_locked_in, 15 | output logic pll_reset_out, 16 | output logic global_reset_n_out 17 | ); 18 | 19 | logic [7:0] global_reset_counter /* synthesis syn_keep=1 nomerge=""*/; 20 | logic [7:0] pll_reset_counter = 0 /* synthesis syn_keep=1 nomerge=""*/; 21 | 22 | always_ff @(posedge clock_in) begin 23 | 24 | if (!pll_reset_counter[7]) begin 25 | pll_reset_counter <= pll_reset_counter + 1; 26 | global_reset_n_out <= 0; 27 | global_reset_counter <= 0; 28 | pll_reset_out <= 1; 29 | end 30 | 31 | else begin 32 | 33 | if (pll_locked_in & !global_reset_counter[7]) begin 34 | global_reset_counter <= global_reset_counter + 1; 35 | end 36 | 37 | if (!pll_locked_in) begin 38 | global_reset_counter <= 0; 39 | end 40 | 41 | global_reset_n_out <= pll_locked_in && global_reset_counter[7]; 42 | pll_reset_out <= 0; 43 | 44 | end 45 | 46 | end 47 | 48 | endmodule -------------------------------------------------------------------------------- /source/fpga/modules/reset/reset_sync.sv: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is a part of: https://github.com/brilliantlabsAR/frame-codebase 3 | * 4 | * Authored by: Rohit Rathnam / Silicon Witchery AB (rohit@siliconwitchery.com) 5 | * Raj Nakarja / Brilliant Labs Limited (raj@brilliant.xyz) 6 | * 7 | * CERN Open Hardware Licence Version 2 - Permissive 8 | * 9 | * Copyright © 2023 Brilliant Labs Limited 10 | */ 11 | 12 | module reset_sync ( 13 | input logic clock_in, 14 | input logic async_reset_n_in, 15 | output logic sync_reset_n_out 16 | ); 17 | 18 | logic metastable_reset_n; 19 | 20 | always @(posedge clock_in or negedge async_reset_n_in) begin 21 | 22 | if (async_reset_n_in == 0) begin 23 | sync_reset_n_out <= 0; 24 | metastable_reset_n <= 0; 25 | end 26 | 27 | else begin 28 | metastable_reset_n <= 1; 29 | sync_reset_n_out <= metastable_reset_n; 30 | end 31 | 32 | end 33 | 34 | endmodule -------------------------------------------------------------------------------- /source/fpga/modules/spi/spi_register.sv: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is a part of: https://github.com/brilliantlabsAR/frame-codebase 3 | * 4 | * Authored by: Rohit Rathnam / Silicon Witchery AB (rohit@siliconwitchery.com) 5 | * Raj Nakarja / Brilliant Labs Limited (raj@brilliant.xyz) 6 | * Robert Metchev / Raumzeit Technologies (robert@raumzeit.co) 7 | * 8 | * CERN Open Hardware Licence Version 2 - Permissive 9 | * 10 | * Copyright © 2023 Brilliant Labs Limited 11 | */ 12 | 13 | module spi_register #( 14 | parameter REGISTER_ADDRESS = 'hdb, 15 | parameter REGISTER_VALUE = 'h81 16 | )( 17 | input logic [7:0] opcode_in, 18 | output logic [7:0] response_out 19 | ); 20 | 21 | always_comb response_out = opcode_in == REGISTER_ADDRESS ? REGISTER_VALUE : '0; 22 | 23 | endmodule 24 | -------------------------------------------------------------------------------- /source/fpga/modules/spi/testbenches/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # This file is a part of: https://github.com/brilliantlabsAR/frame-codebase 3 | # 4 | # Authored by: Raj Nakarja / Brilliant Labs Ltd. (raj@brilliant.xyz) 5 | # Rohit Rathnam / Silicon Witchery AB (rohit@siliconwitchery.com) 6 | # Uma S. Gupta / Techno Exponent (umasankar@technoexponent.com) 7 | # 8 | # ISC Licence 9 | # 10 | # Copyright © 2023 Brilliant Labs Ltd. 11 | # 12 | # Permission to use, copy, modify, and/or distribute this software for any 13 | # purpose with or without fee is hereby granted, provided that the above 14 | # copyright notice and this permission notice appear in all copies. 15 | # 16 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 17 | # REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 18 | # AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 19 | # INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 20 | # LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 21 | # OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 22 | # PERFORMANCE OF THIS SOFTWARE. 23 | # 24 | 25 | default: 26 | @mkdir -p simulation 27 | 28 | @iverilog -Wall \ 29 | -g2012 \ 30 | -I fpga \ 31 | -o simulation/spi_tb.out \ 32 | -i spi_tb.sv 33 | 34 | @vvp simulation/spi_tb.out \ 35 | -fst 36 | 37 | @gtkwave simulation/spi_tb.fst \ 38 | spi_tb.gtkw 39 | 40 | clean: 41 | @rm -rf simulation 42 | @echo Cleaned -------------------------------------------------------------------------------- /source/fpga/radiant/.gitignore: -------------------------------------------------------------------------------- 1 | # Build output 2 | /frame 3 | /frame_tcr* 4 | .ng_run_manager.ini 5 | .setting.ini 6 | promote.xml 7 | reportview.xml 8 | 9 | # Generated files 10 | /pll_ip/* 11 | !/pll_ip/*.xml 12 | !/pll_ip/*.cfg 13 | !/pll_ip/*.ipx 14 | !/pll_ip/Makefile 15 | 16 | /byte_to_pixel_ip/* 17 | !/byte_to_pixel_ip/*.xml 18 | !/byte_to_pixel_ip/*.cfg 19 | !/byte_to_pixel_ip/*.ipx 20 | 21 | /csi2_receiver_ip/* 22 | !/csi2_receiver_ip/*.xml 23 | !/csi2_receiver_ip/*.cfg 24 | !/csi2_receiver_ip/*.ipx 25 | 26 | # Logs and reports 27 | radiantc.* 28 | *.log 29 | *.html 30 | transcript 31 | 32 | # Temporary and backup files 33 | .recovery 34 | *.bak 35 | -------------------------------------------------------------------------------- /source/fpga/radiant/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # This file is a part of: https://github.com/brilliantlabsAR/frame-codebase 3 | # 4 | # Authored by: Robert Metchev / Raumzeit Technologies (robert@raumzeit.co) 5 | # 6 | # CERN Open Hardware Licence Version 2 - Permissive 7 | # 8 | # Copyright © 2024 Brilliant Labs Limited 9 | # 10 | .PHONY: all 11 | 12 | all: 13 | radiant frame.rdf 14 | -------------------------------------------------------------------------------- /source/fpga/radiant/byte_to_pixel_ip/byte_to_pixel_ip.cfg: -------------------------------------------------------------------------------- 1 | { 2 | "BYTE_CLK_FREQ": 45.0, 3 | "PIX_CLK_FREQ": 36.0, 4 | "FIFO_IMPL": "LUT", 5 | "WORD_CNT": 40 6 | } -------------------------------------------------------------------------------- /source/fpga/radiant/csi2_receiver_ip/csi2_receiver_ip.cfg: -------------------------------------------------------------------------------- 1 | { 2 | "NUM_RX_LANE": 1, 3 | "RX_LINE_RATE": 360.0, 4 | "AXI4": false, 5 | "RX_FIFO_TYPE": "SINGLE", 6 | "RX_FIFO_IMPL": "LUT", 7 | "RX_FIFO_DEPTH": 16, 8 | "RX_FIFO_PKT_DLY": 1 9 | } -------------------------------------------------------------------------------- /source/fpga/radiant/pll_ip/Makefile: -------------------------------------------------------------------------------- 1 | IP := -ip /opt/lscc/radiant/2023.2/ip/lifcl/pll 2 | VLNV := -vlnv latticesemi.com:module:pll:1.8.0 3 | IPGEN_FLAGS := $(VLNV) -sp "8_Low-Power_1.0V" -t "WLCSP72" -f "LIFCL" -p "LIFCL-17" 4 | 5 | all: ./pll_ip.ipx ./rtl/pll_ip.v 6 | %.v %.ipx: 7 | ipgenwrap -cfg pll_ip.cfg -name pll_ip -o . $(IPGEN_FLAGS) 8 | 9 | clean: 10 | @#rm -rf $(filter-out Makefile pll_ip.cfg pll_ip.ipx component.xml design.xml,$(shell ls)) 11 | rm -rf constraints misc rtl testbench 12 | -------------------------------------------------------------------------------- /source/fpga/radiant/pll_ip/pll_ip.cfg: -------------------------------------------------------------------------------- 1 | { 2 | "gui_en_frac_n": false, 3 | "gui_en_ssc": false, 4 | "gui_en_int_fbkdel_sel": false, 5 | "gui_refclk_freq": 18.0, 6 | "gui_en_refclk_mon": false, 7 | "gui_fbk_mode": "CLKOS3", 8 | "gui_clk_op_freq": 24.0, 9 | "gui_clk_op_tol": 0.0, 10 | "gui_clk_op_trim_en": false, 11 | "gui_clk_os_en": true, 12 | "gui_clk_os_freq": 36.0, 13 | "gui_clk_s2_en": true, 14 | "gui_clk_s2_freq": 36.0, 15 | "gui_clk_s2_tol": 0.0, 16 | "gui_clk_s3_freq": 72.0, 17 | "gui_clk_s3_tol": 0.0, 18 | "gui_clk_s4_en": true, 19 | "gui_clk_s4_freq": 78.0, 20 | "gui_clk_s5_en": false, 21 | "gui_en_pll_reset": true, 22 | "gui_pll_lock_sticky": false, 23 | "gui_en_powerdown": true 24 | } -------------------------------------------------------------------------------- /source/fpga/radiant/pll_ip/pll_ip.ipx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /source/fpga/radiant/run.tcl: -------------------------------------------------------------------------------- 1 | prj_open frame.rdf 2 | prj_run PAR -impl frame 3 | prj_run Export -impl frame -------------------------------------------------------------------------------- /source/i2c.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is a part of: https://github.com/brilliantlabsAR/frame-codebase 3 | * 4 | * Authored by: Raj Nakarja / Brilliant Labs Ltd. (raj@brilliant.xyz) 5 | * Rohit Rathnam / Silicon Witchery AB (rohit@siliconwitchery.com) 6 | * Uma S. Gupta / Techno Exponent (umasankar@technoexponent.com) 7 | * 8 | * ISC Licence 9 | * 10 | * Copyright © 2023 Brilliant Labs Ltd. 11 | * 12 | * Permission to use, copy, modify, and/or distribute this software for any 13 | * purpose with or without fee is hereby granted, provided that the above 14 | * copyright notice and this permission notice appear in all copies. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 17 | * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 18 | * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 19 | * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 20 | * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 21 | * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 22 | * PERFORMANCE OF THIS SOFTWARE. 23 | */ 24 | 25 | #pragma once 26 | 27 | #include 28 | #include 29 | 30 | typedef enum i2c_device_t 31 | { 32 | ACCELEROMETER, 33 | CAMERA, 34 | MAGNETOMETER, 35 | PMIC, 36 | } i2c_device_t; 37 | 38 | typedef struct i2c_response_t 39 | { 40 | bool fail; 41 | uint8_t value; 42 | } i2c_response_t; 43 | 44 | void i2c_configure(void); 45 | 46 | i2c_response_t i2c_read(i2c_device_t device, 47 | uint16_t register_address, 48 | uint8_t register_mask); 49 | 50 | i2c_response_t i2c_write(i2c_device_t device, 51 | uint16_t register_address, 52 | uint8_t register_mask, 53 | uint8_t set_value); -------------------------------------------------------------------------------- /source/nrfx_log.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is a part of: https://github.com/brilliantlabsAR/frame-codebase 3 | * 4 | * Authored by: Raj Nakarja / Brilliant Labs Ltd. (raj@brilliant.xyz) 5 | * Rohit Rathnam / Silicon Witchery AB (rohit@siliconwitchery.com) 6 | * Uma S. Gupta / Techno Exponent (umasankar@technoexponent.com) 7 | * 8 | * ISC Licence 9 | * 10 | * Copyright © 2023 Brilliant Labs Ltd. 11 | * 12 | * Permission to use, copy, modify, and/or distribute this software for any 13 | * purpose with or without fee is hereby granted, provided that the above 14 | * copyright notice and this permission notice appear in all copies. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 17 | * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 18 | * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 19 | * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 20 | * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 21 | * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 22 | * PERFORMANCE OF THIS SOFTWARE. 23 | */ 24 | 25 | #pragma once 26 | 27 | #include 28 | #include "SEGGER_RTT.h" 29 | 30 | /** 31 | * @brief Logging macros. 32 | */ 33 | 34 | #define LOG(string, ...) printf(string "\r\n", ##__VA_ARGS__) 35 | 36 | #define NRFX_LOG_ERROR(string, ...) 37 | #define NRFX_LOG_WARNING(string, ...) 38 | #define NRFX_LOG_INFO(string, ...) 39 | #define NRFX_LOG_DEBUG(string, ...) 40 | 41 | #define NRFX_LOG_HEXDUMP_ERROR(p_memory, length) 42 | #define NRFX_LOG_HEXDUMP_WARNING(p_memory, length) 43 | #define NRFX_LOG_HEXDUMP_INFO(p_memory, length) 44 | #define NRFX_LOG_HEXDUMP_DEBUG(p_memory, length) 45 | #define NRFX_LOG_ERROR_STRING_GET(error_code) -------------------------------------------------------------------------------- /source/radio_test/main.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is a part of: https://github.com/brilliantlabsAR/frame-codebase 3 | * 4 | * Authored by: Raj Nakarja / Brilliant Labs Ltd. (raj@brilliant.xyz) 5 | * Rohit Rathnam / Silicon Witchery AB (rohit@siliconwitchery.com) 6 | * Uma S. Gupta / Techno Exponent (umasankar@technoexponent.com) 7 | * 8 | * ISC Licence 9 | * 10 | * Copyright © 2023 Brilliant Labs Ltd. 11 | * 12 | * Permission to use, copy, modify, and/or distribute this software for any 13 | * purpose with or without fee is hereby granted, provided that the above 14 | * copyright notice and this permission notice appear in all copies. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 17 | * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 18 | * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 19 | * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 20 | * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 21 | * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 22 | * PERFORMANCE OF THIS SOFTWARE. 23 | */ 24 | 25 | #pragma once 26 | 27 | extern bool not_real_hardware; 28 | -------------------------------------------------------------------------------- /source/radio_test/nrfx_config.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is a part of: https://github.com/brilliantlabsAR/frame-codebase 3 | * 4 | * Authored by: Raj Nakarja / Brilliant Labs Ltd. (raj@brilliant.xyz) 5 | * Rohit Rathnam / Silicon Witchery AB (rohit@siliconwitchery.com) 6 | * Uma S. Gupta / Techno Exponent (umasankar@technoexponent.com) 7 | * 8 | * ISC Licence 9 | * 10 | * Copyright © 2023 Brilliant Labs Ltd. 11 | * 12 | * Permission to use, copy, modify, and/or distribute this software for any 13 | * purpose with or without fee is hereby granted, provided that the above 14 | * copyright notice and this permission notice appear in all copies. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 17 | * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 18 | * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 19 | * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 20 | * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 21 | * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 22 | * PERFORMANCE OF THIS SOFTWARE. 23 | */ 24 | 25 | #pragma once 26 | 27 | #define NRFX_CONFIG_H__ 28 | #include "templates/nrfx_config_common.h" 29 | 30 | #define NRFX_GPIOTE_CONFIG_NUM_OF_EVT_HANDLERS 15 31 | #define NRFX_GPIOTE_DEFAULT_CONFIG_IRQ_PRIORITY 7 32 | #define NRFX_GPIOTE_ENABLED 1 33 | 34 | #define NRFX_TIMER_ENABLED 1 35 | #define NRFX_TIMER0_ENABLED 1 36 | 37 | #define NRFX_SYSTICK_ENABLED 1 38 | 39 | #define NRFX_TWIM_ENABLED 1 40 | #define NRFX_TWIM0_ENABLED 1 41 | 42 | #include "templates/nrfx_config_nrf52840.h" 43 | -------------------------------------------------------------------------------- /tests/test_bluetooth_callback_api.py: -------------------------------------------------------------------------------- 1 | import asyncio 2 | from frameutils import Bluetooth 3 | 4 | 5 | async def main(): 6 | bluetooth = Bluetooth() 7 | 8 | await bluetooth.connect( 9 | print_response_handler=lambda string: print(f"Print: {string}"), 10 | data_response_handler=lambda data: print(f"Data: {data.decode()}"), 11 | ) 12 | 13 | await bluetooth.send_reset_signal() 14 | await bluetooth.send_lua("function ble_event(d)frame.bluetooth.send(d)end") 15 | await bluetooth.send_lua("frame.bluetooth.receive_callback(ble_event)") 16 | await bluetooth.send_lua("for i=1,10 do print(i); frame.sleep(1) end") 17 | 18 | await asyncio.sleep(1) 19 | await bluetooth.send_data(b"hello there") 20 | await asyncio.sleep(1) 21 | await bluetooth.send_data(b"hello") 22 | await asyncio.sleep(10) 23 | 24 | await bluetooth.disconnect() 25 | 26 | 27 | asyncio.run(main()) 28 | -------------------------------------------------------------------------------- /tests/test_bluetooth_throughput.py: -------------------------------------------------------------------------------- 1 | import asyncio 2 | import time 3 | from aioconsole import ainput 4 | from frameutils import Bluetooth 5 | 6 | total_data_received = 0 7 | last_data_time = time.time() 8 | 9 | 10 | def receive_data(data): 11 | global total_data_received 12 | global last_data_time 13 | total_data_received += len(data) 14 | 15 | if len(data) == 0: 16 | throughput = total_data_received / (time.time() - last_data_time) 17 | last_data_time = time.time() 18 | total_data_received = 0 19 | print(f"Throughput: {throughput/1000:.2f} KB/s") 20 | 21 | 22 | async def main(): 23 | 24 | lua_script = """ 25 | function send_data(data) 26 | while true do 27 | if (pcall(frame.bluetooth.send, data)) then 28 | break 29 | end 30 | end 31 | end 32 | 33 | data = string.rep('a',frame.bluetooth.max_length()) 34 | 35 | while true do 36 | for i = 1, 100 do send_data(data) end 37 | send_data('') 38 | end 39 | """ 40 | 41 | b = Bluetooth() 42 | 43 | await b.connect(data_response_handler=receive_data) 44 | 45 | print("Testing throughput") 46 | print("Press Enter to quit") 47 | 48 | await b.upload_file(lua_script, "main.lua") 49 | await b.send_reset_signal() 50 | 51 | # Wait until a keypress 52 | await ainput("") 53 | 54 | await b.send_break_signal() 55 | await b.disconnect() 56 | 57 | 58 | asyncio.run(main()) 59 | -------------------------------------------------------------------------------- /tests/test_compression.py: -------------------------------------------------------------------------------- 1 | import asyncio 2 | from frameutils import Bluetooth 3 | 4 | 5 | async def main(): 6 | 7 | b = Bluetooth() 8 | 9 | await b.connect(print_response_handler=lambda s: print(s)) 10 | 11 | # Upload the Lua script 12 | lua_script = """ 13 | -- Decompression function 14 | function decomp_func(data) 15 | print(data) 16 | end 17 | 18 | -- Register the decompression function 19 | frame.compression.process_function(decomp_func) 20 | 21 | -- Function to handle the compressed data received from Bluetooth 22 | function ble_func(data) 23 | frame.compression.decompress(data, 1024) 24 | end 25 | 26 | -- Register the Bluetooth receive callback 27 | frame.bluetooth.receive_callback(ble_func) 28 | 29 | """ 30 | 31 | await b.upload_file(lua_script, "main.lua") 32 | await b.send_reset_signal() 33 | 34 | await asyncio.sleep(1) 35 | 36 | # Send the compressed data. Here the total size of the data is is pretty small, 37 | # but usually you would want to split the data into MTU sized chunks and stitch 38 | # them together on the device side before decompressing. 39 | compressed_data = bytearray( 40 | b"\x04\x22\x4d\x18\x64\x40\xa7\x6f\x00\x00\x00\xf5\x3d\x48\x65\x6c\x6c\x6f\x21\x20\x49\x20\x77\x61\x73\x20\x73\x6f\x6d\x65\x20\x63\x6f\x6d\x70\x72\x65\x73\x73\x65\x64\x20\x64\x61\x74\x61\x2e\x20\x49\x6e\x20\x74\x68\x69\x73\x20\x63\x61\x73\x65\x2c\x20\x73\x74\x72\x69\x6e\x67\x73\x20\x61\x72\x65\x6e\x27\x74\x20\x70\x61\x72\x74\x69\x63\x75\x6c\x61\x72\x6c\x79\x3b\x00\xf1\x01\x69\x62\x6c\x65\x2c\x20\x62\x75\x74\x20\x73\x70\x72\x69\x74\x65\x49\x00\xa0\x20\x77\x6f\x75\x6c\x64\x20\x62\x65\x2e\x00\x00\x00\x00\x5f\xd0\xa3\x47" 41 | ) 42 | 43 | await b.send_data(compressed_data) 44 | 45 | await b.send_break_signal() 46 | await b.disconnect() 47 | 48 | 49 | asyncio.run(main()) 50 | -------------------------------------------------------------------------------- /tests/test_display_brightness.py: -------------------------------------------------------------------------------- 1 | import asyncio, sys 2 | from frameutils import Bluetooth 3 | 4 | 5 | async def main(): 6 | b = Bluetooth() 7 | await b.connect() 8 | 9 | await b.send_lua(f"frame.display.text('Hello Frame!', 50, 50)") 10 | await b.send_lua(f"frame.display.text('The quick brown fox jumped', 50, 150)") 11 | await b.send_lua(f"frame.display.text('over the lazy dog.', 50, 200)") 12 | await b.send_lua("frame.display.show()") 13 | await asyncio.sleep(1.00) 14 | 15 | # Using API 16 | await b.send_lua("frame.display.set_brightness(-2)") 17 | await asyncio.sleep(1.00) 18 | 19 | await b.send_lua("frame.display.set_brightness(-1)") 20 | await asyncio.sleep(1.00) 21 | 22 | await b.send_lua("frame.display.set_brightness(0)") 23 | await asyncio.sleep(1.00) 24 | 25 | await b.send_lua("frame.display.set_brightness(1)") 26 | await asyncio.sleep(1.00) 27 | 28 | await b.send_lua("frame.display.set_brightness(2)") 29 | await asyncio.sleep(1.00) 30 | 31 | # Same thing using bare write register commands 32 | await b.send_lua("frame.display.write_register(0x05, 0xC8 | 1)") 33 | await asyncio.sleep(1.00) 34 | 35 | await b.send_lua("frame.display.write_register(0x05, 0xC8 | 2)") 36 | await asyncio.sleep(1.00) 37 | 38 | await b.send_lua("frame.display.write_register(0x05, 0xC8 | 0)") 39 | await asyncio.sleep(1.00) 40 | 41 | await b.send_lua("frame.display.write_register(0x05, 0xC8 | 3)") 42 | await asyncio.sleep(1.00) 43 | 44 | await b.send_lua("frame.display.write_register(0x05, 0xC8 | 4)") 45 | await asyncio.sleep(1.00) 46 | 47 | await b.disconnect() 48 | 49 | 50 | asyncio.run(main()) 51 | -------------------------------------------------------------------------------- /tests/test_imu_direction.py: -------------------------------------------------------------------------------- 1 | """ 2 | Tests the Frame specific Lua libraries over Bluetooth. 3 | """ 4 | 5 | import asyncio 6 | from frameutils import Bluetooth 7 | 8 | 9 | async def main(): 10 | b = Bluetooth() 11 | 12 | await b.connect(print_response_handler=lambda s: print(s)) 13 | 14 | # Load the I2C bus 15 | await b.send_lua("frame.camera.auto(true, 'average')") 16 | 17 | # Enable taps 18 | await b.send_lua("frame.imu.tap_callback((function()print('Tap!')end))") 19 | 20 | while True: 21 | await b.send_lua("resp = frame.imu.direction()") 22 | 23 | await b.send_lua( 24 | "print('roll: '..tostring(resp['roll'])..'\tpitch: '..tostring(resp['pitch'])..'\theading: '..tostring(resp['heading']))", 25 | await_print=True, 26 | ) 27 | asyncio.sleep(0.1) 28 | 29 | await b.disconnect() 30 | 31 | 32 | asyncio.run(main()) 33 | -------------------------------------------------------------------------------- /tests/test_imu_raw.py: -------------------------------------------------------------------------------- 1 | """ 2 | Tests the Frame specific Lua libraries over Bluetooth. 3 | """ 4 | 5 | import asyncio 6 | from frameutils import Bluetooth 7 | 8 | 9 | async def main(): 10 | b = Bluetooth() 11 | 12 | await b.connect(print_response_handler=lambda s: print(s)) 13 | 14 | # Load the I2C bus 15 | await b.send_lua("frame.camera.auto(true, 'average')") 16 | 17 | # Enable taps 18 | await b.send_lua("frame.imu.tap_callback((function()print('Tap!')end))") 19 | 20 | while True: 21 | await b.send_lua("resp = frame.imu.raw()") 22 | 23 | await b.send_lua( 24 | "print(tostring(resp['accelerometer']['x'])..'\t'..tostring(resp['accelerometer']['y'])..'\t'..tostring(resp['accelerometer']['z'])..'\t'..tostring(resp['compass']['x'])..'\t'..tostring(resp['compass']['y'])..'\t'..tostring(resp['compass']['z']))", 25 | await_print=True, 26 | ) 27 | asyncio.sleep(0.1) 28 | 29 | await b.disconnect() 30 | 31 | 32 | asyncio.run(main()) 33 | -------------------------------------------------------------------------------- /tests/test_led.py: -------------------------------------------------------------------------------- 1 | """ 2 | Tests the Frame specific Lua libraries over Bluetooth. 3 | """ 4 | 5 | import asyncio 6 | from frameutils import Bluetooth 7 | 8 | 9 | async def main(): 10 | b = Bluetooth() 11 | 12 | await b.connect(print_response_handler=lambda s: print(s)) 13 | 14 | await b.send_lua("frame.led.set_color(100, 0, 0)") 15 | await asyncio.sleep(1) 16 | 17 | await b.send_lua("frame.led.set_color(0, 100, 0)") 18 | await asyncio.sleep(1) 19 | 20 | await b.send_lua("frame.led.set_color(0, 0, 100)") 21 | await asyncio.sleep(1) 22 | 23 | await b.disconnect() 24 | 25 | 26 | asyncio.run(main()) 27 | -------------------------------------------------------------------------------- /tests/test_power_saving.py: -------------------------------------------------------------------------------- 1 | import asyncio 2 | from frameutils import Bluetooth 3 | 4 | 5 | async def main(): 6 | b = Bluetooth() 7 | 8 | await b.connect(print_response_handler=lambda s: print(s)) 9 | 10 | # Display 11 | await b.send_lua("frame.display.power_save(false)") 12 | 13 | await b.send_lua("frame.display.text('Test', 1, 1)") 14 | await b.send_lua("frame.display.text('Test', 563, 1)") 15 | await b.send_lua("frame.display.text('Test', 1, 352)") 16 | await b.send_lua("frame.display.text('Test', 563, 352)") 17 | await b.send_lua("frame.display.show()") 18 | await asyncio.sleep(2.00) 19 | 20 | await b.send_lua("frame.display.power_save(true)") 21 | await asyncio.sleep(5.00) 22 | await b.send_lua("frame.display.power_save(false)") 23 | 24 | # Camera 25 | await b.send_lua("frame.camera.power_save(true)") 26 | await asyncio.sleep(5.00) 27 | await b.send_lua("frame.camera.power_save(false)") 28 | 29 | # Both 30 | await b.send_lua("frame.display.power_save(true)") 31 | await b.send_lua("frame.camera.power_save(true)") 32 | await asyncio.sleep(5.00) 33 | await b.send_lua("frame.display.power_save(false)") 34 | await b.send_lua("frame.camera.power_save(false)") 35 | await asyncio.sleep(5.00) 36 | 37 | # Deep sleep 38 | await b.send_lua("frame.sleep()") 39 | 40 | await b.disconnect() 41 | 42 | 43 | asyncio.run(main()) 44 | -------------------------------------------------------------------------------- /tests/test_taps.py: -------------------------------------------------------------------------------- 1 | """ 2 | Tests the Frame specific Lua libraries over Bluetooth. 3 | """ 4 | 5 | import asyncio 6 | from frameutils import Bluetooth 7 | 8 | 9 | async def main(): 10 | b = Bluetooth() 11 | 12 | await b.connect(print_response_handler=lambda s: print(s)) 13 | 14 | await b.send_lua("frame.imu.tap_callback((function()print('Tap!')end))") 15 | 16 | await asyncio.sleep(100) 17 | 18 | await b.disconnect() 19 | 20 | 21 | asyncio.run(main()) 22 | -------------------------------------------------------------------------------- /tests/test_version.py: -------------------------------------------------------------------------------- 1 | """ 2 | Tests the Frame specific Lua libraries over Bluetooth. 3 | """ 4 | 5 | import asyncio 6 | from frameutils import Bluetooth 7 | 8 | 9 | async def main(): 10 | b = Bluetooth() 11 | 12 | await b.connect(print_response_handler=lambda s: print(s)) 13 | 14 | await b.send_lua("print(frame.HARDWARE_VERSION)") 15 | await b.send_lua("print(frame.FIRMWARE_VERSION)") 16 | await b.send_lua("print(frame.GIT_TAG)") 17 | 18 | await asyncio.sleep(1) 19 | 20 | await b.disconnect() 21 | 22 | 23 | asyncio.run(main()) 24 | --------------------------------------------------------------------------------