├── libraries
├── littlefs
│ ├── VERSION.md
│ ├── lfs_util.c
│ └── LICENSE.md
├── nrf5sdk
│ ├── nano-pb
│ │ ├── generator
│ │ │ ├── proto
│ │ │ │ ├── __init__.py
│ │ │ │ └── Makefile
│ │ │ ├── protoc-gen-nanopb.bat
│ │ │ ├── protoc-gen-nanopb
│ │ │ └── camel_case_splitter.py
│ │ ├── LICENSE.txt
│ │ └── pb_common.h
│ ├── ble
│ │ └── common
│ │ │ ├── ble_date_time.h
│ │ │ └── ble_sensor_location.h
│ ├── micro-ecc
│ │ ├── micro_ecc_lib_nrf52hf_armgcc.a
│ │ └── license.txt
│ └── bootloader
│ │ └── dfu
│ │ └── dfu-cc.options
├── picolibc
│ ├── crt0.o
│ ├── libc.a
│ ├── crt0-hosted.o
│ ├── machine
│ │ ├── termios.h
│ │ ├── ansi.h
│ │ ├── _time.h
│ │ ├── _types.h
│ │ ├── malloc.h
│ │ ├── stdlib.h
│ │ ├── param.h
│ │ ├── types.h
│ │ ├── time.h
│ │ ├── setjmp-dj.h
│ │ ├── _arc4random.h
│ │ └── _endian.h
│ ├── sys
│ │ ├── custom_file.h
│ │ ├── string.h
│ │ ├── dir.h
│ │ ├── _locale.h
│ │ ├── _tz_structs.h
│ │ ├── file.h
│ │ ├── fcntl.h
│ │ └── auxv.h
│ ├── memory.h
│ ├── bits
│ │ └── types
│ │ │ └── mbstate_t.h
│ ├── alloca.h
│ ├── envz.h
│ ├── ssp
│ │ └── stdlib.h
│ ├── arpa
│ │ └── inet.h
│ ├── libgen.h
│ ├── cpio.h
│ ├── argz.h
│ ├── tar.h
│ ├── wordexp.h
│ ├── newlib.h
│ ├── envlock.h
│ ├── fcntl.h
│ └── endian.h
├── lua
│ ├── lundump.h
│ ├── lprefix.h
│ ├── lualib.h
│ ├── lzio.c
│ ├── lapi.h
│ ├── lopnames.h
│ ├── lzio.h
│ ├── lstring.h
│ ├── linit.c
│ └── lfunc.h
└── lz4
│ └── LICENSE
├── source
├── fpga
│ ├── cocotb
│ │ ├── jed
│ │ │ ├── .gitignore
│ │ │ └── Makefile
│ │ ├── images
│ │ │ ├── baboon.bmp
│ │ │ ├── 4.2.03.tiff
│ │ │ ├── 4.2.07.tiff
│ │ │ ├── 4.2.03.tiff.npy
│ │ │ ├── 4.2.07.tiff.npy
│ │ │ └── baboon.bmp.npy
│ │ ├── .gitignore
│ │ ├── tests
│ │ │ ├── camera
│ │ │ │ ├── .gitignore
│ │ │ │ └── Makefile
│ │ │ ├── spi
│ │ │ │ └── Makefile
│ │ │ ├── graphics
│ │ │ │ └── Makefile
│ │ │ └── pll
│ │ │ │ ├── pll_test.py
│ │ │ │ ├── pll_tb.sv
│ │ │ │ └── Makefile
│ │ ├── common
│ │ │ └── dumper.vh
│ │ └── jpeg_common
│ │ │ ├── colorspace.py
│ │ │ └── jcommon.py
│ ├── radiant
│ │ ├── run.tcl
│ │ ├── byte_to_pixel_ip
│ │ │ └── byte_to_pixel_ip.cfg
│ │ ├── csi2_receiver_ip
│ │ │ └── csi2_receiver_ip.cfg
│ │ ├── Makefile
│ │ ├── pll_ip
│ │ │ ├── Makefile
│ │ │ ├── pll_ip.cfg
│ │ │ └── pll_ip.ipx
│ │ └── .gitignore
│ └── modules
│ │ ├── camera
│ │ ├── testbenches
│ │ │ ├── csi
│ │ │ │ ├── csi
│ │ │ │ │ ├── message_log.xml
│ │ │ │ │ ├── csi_csi.cprj
│ │ │ │ │ ├── pll_sim_ip.cprj
│ │ │ │ │ ├── byte_to_pixel_ip.cprj
│ │ │ │ │ ├── csi2_receiver_ip.cprj
│ │ │ │ │ ├── pixel_to_byte_ip.cprj
│ │ │ │ │ ├── csi2_transmitter_ip.cprj
│ │ │ │ │ ├── csi_csi_synthesize.tcl
│ │ │ │ │ └── csi_csi_lattice.synproj
│ │ │ │ ├── source
│ │ │ │ │ └── csi
│ │ │ │ │ │ ├── pll_sim_ip
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── pll_sim_ip.cfg
│ │ │ │ │ │ ├── Makefile
│ │ │ │ │ │ └── pll_sim_ip.ipx
│ │ │ │ │ │ ├── byte_to_pixel_ip
│ │ │ │ │ │ └── byte_to_pixel_ip.cfg
│ │ │ │ │ │ ├── pixel_to_byte_ip
│ │ │ │ │ │ └── pixel_to_byte_ip.cfg
│ │ │ │ │ │ ├── csi2_receiver_ip
│ │ │ │ │ │ └── csi2_receiver_ip.cfg
│ │ │ │ │ │ └── csi2_transmitter_ip
│ │ │ │ │ │ └── csi2_transmitter_ip.cfg
│ │ │ │ ├── promote.xml
│ │ │ │ ├── reportview.xml
│ │ │ │ ├── .gitignore
│ │ │ │ ├── Makefile
│ │ │ │ └── csi.rdf
│ │ │ └── debayer
│ │ │ │ ├── test_image.png
│ │ │ │ ├── test_image_bayered.png
│ │ │ │ └── test_image_debayered.png
│ │ ├── jpeg_encoder
│ │ │ ├── jpeg_encoder.vh
│ │ │ └── jlib
│ │ │ │ ├── psync1.sv
│ │ │ │ ├── large_ram_dp_q.sv
│ │ │ │ ├── dp_ram.sv
│ │ │ │ └── dp_ram_be.sv
│ │ └── tools
│ │ │ └── gamma_table_generator_script.py
│ │ ├── graphics
│ │ └── testbenches
│ │ │ └── README
│ │ ├── spi
│ │ ├── spi_register.sv
│ │ └── testbenches
│ │ │ └── Makefile
│ │ ├── reset
│ │ ├── reset_sync.sv
│ │ └── global_reset_sync.sv
│ │ └── pll
│ │ └── clkswitch.v
├── application
│ ├── lua_libraries
│ │ ├── 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
│ │ └── version.c
│ ├── watchdog.h
│ ├── main.h
│ ├── bluetooth.h
│ ├── flash.h
│ ├── compression.h
│ ├── luaport.h
│ └── spi.h
├── bootloader
│ ├── dfu_private_key.pem
│ ├── dfu_public_key.c
│ └── nrfx_config.h
├── radio_test
│ ├── main.h
│ └── nrfx_config.h
├── error_logging.h
├── nrfx_log.h
└── i2c.h
├── docs
└── diagrams
│ ├── fpga-architecture.drawio.png
│ ├── graphics-color-palette.drawio.png
│ ├── graphics-sprite-engine.drawio.png
│ ├── graphics-vector-engine.drawio.png
│ ├── frame-system-architecture.drawio.png
│ ├── camera-pipeline-architecture.drawio.png
│ ├── graphics-pipeline-architecture.drawio.png
│ ├── camera-jpeg-encoder-architecture.drawio.png
│ └── camera-jpeg-encoder-architecture-2.drawio.png
├── .gitmodules
├── .gitignore
├── tests
├── test_taps.py
├── test_version.py
├── test_led.py
├── test_imu_direction.py
├── test_bluetooth_callback_api.py
├── test_imu_raw.py
├── test_power_saving.py
├── test_bluetooth_throughput.py
├── test_display_brightness.py
└── test_compression.py
├── LICENSE.md
└── .vscode
└── c_cpp_properties.json
/libraries/littlefs/VERSION.md:
--------------------------------------------------------------------------------
1 | v2.8.1 c733d9e
2 |
--------------------------------------------------------------------------------
/libraries/nrf5sdk/nano-pb/generator/proto/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/fpga/cocotb/jed/.gitignore:
--------------------------------------------------------------------------------
1 | *.bin
2 | *.jpg
3 | *.jpeg
4 | bin/
5 |
--------------------------------------------------------------------------------
/source/fpga/radiant/run.tcl:
--------------------------------------------------------------------------------
1 | prj_open frame.rdf
2 | prj_run PAR -impl frame
3 | prj_run Export -impl frame
--------------------------------------------------------------------------------
/libraries/picolibc/crt0.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/libraries/picolibc/crt0.o
--------------------------------------------------------------------------------
/libraries/picolibc/libc.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/libraries/picolibc/libc.a
--------------------------------------------------------------------------------
/source/fpga/modules/camera/testbenches/csi/csi/message_log.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/source/fpga/modules/camera/testbenches/csi/source/csi/pll_sim_ip/.gitignore:
--------------------------------------------------------------------------------
1 | constraints
2 | misc
3 | rtl
4 | testbench
5 |
--------------------------------------------------------------------------------
/libraries/picolibc/crt0-hosted.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/libraries/picolibc/crt0-hosted.o
--------------------------------------------------------------------------------
/libraries/picolibc/machine/termios.h:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2002 Jeff Johnston */
2 | #define __MAX_BAUD B4000000
3 |
--------------------------------------------------------------------------------
/source/fpga/cocotb/images/baboon.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/source/fpga/cocotb/images/baboon.bmp
--------------------------------------------------------------------------------
/source/fpga/cocotb/images/4.2.03.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/source/fpga/cocotb/images/4.2.03.tiff
--------------------------------------------------------------------------------
/source/fpga/cocotb/images/4.2.07.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/source/fpga/cocotb/images/4.2.07.tiff
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/source/fpga/cocotb/images/4.2.03.tiff.npy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/source/fpga/cocotb/images/4.2.03.tiff.npy
--------------------------------------------------------------------------------
/source/fpga/cocotb/images/4.2.07.tiff.npy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/source/fpga/cocotb/images/4.2.07.tiff.npy
--------------------------------------------------------------------------------
/source/fpga/cocotb/images/baboon.bmp.npy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/source/fpga/cocotb/images/baboon.bmp.npy
--------------------------------------------------------------------------------
/docs/diagrams/fpga-architecture.drawio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/docs/diagrams/fpga-architecture.drawio.png
--------------------------------------------------------------------------------
/libraries/picolibc/machine/ansi.h:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2001 Jeff Johnston */
2 | /* dummy header file to support BSD compiler */
3 |
--------------------------------------------------------------------------------
/libraries/nrf5sdk/ble/common/ble_date_time.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/libraries/nrf5sdk/ble/common/ble_date_time.h
--------------------------------------------------------------------------------
/docs/diagrams/graphics-color-palette.drawio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/docs/diagrams/graphics-color-palette.drawio.png
--------------------------------------------------------------------------------
/docs/diagrams/graphics-sprite-engine.drawio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/docs/diagrams/graphics-sprite-engine.drawio.png
--------------------------------------------------------------------------------
/docs/diagrams/graphics-vector-engine.drawio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/docs/diagrams/graphics-vector-engine.drawio.png
--------------------------------------------------------------------------------
/libraries/picolibc/sys/custom_file.h:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2007 Jeff Johnston */
2 | #error System-specific custom_file.h is missing.
3 |
4 |
--------------------------------------------------------------------------------
/docs/diagrams/frame-system-architecture.drawio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/docs/diagrams/frame-system-architecture.drawio.png
--------------------------------------------------------------------------------
/libraries/nrf5sdk/ble/common/ble_sensor_location.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/libraries/nrf5sdk/ble/common/ble_sensor_location.h
--------------------------------------------------------------------------------
/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 | }
--------------------------------------------------------------------------------
/docs/diagrams/camera-pipeline-architecture.drawio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/docs/diagrams/camera-pipeline-architecture.drawio.png
--------------------------------------------------------------------------------
/docs/diagrams/graphics-pipeline-architecture.drawio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/docs/diagrams/graphics-pipeline-architecture.drawio.png
--------------------------------------------------------------------------------
/docs/diagrams/camera-jpeg-encoder-architecture.drawio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/docs/diagrams/camera-jpeg-encoder-architecture.drawio.png
--------------------------------------------------------------------------------
/libraries/nrf5sdk/micro-ecc/micro_ecc_lib_nrf52hf_armgcc.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/libraries/nrf5sdk/micro-ecc/micro_ecc_lib_nrf52hf_armgcc.a
--------------------------------------------------------------------------------
/docs/diagrams/camera-jpeg-encoder-architecture-2.drawio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/docs/diagrams/camera-jpeg-encoder-architecture-2.drawio.png
--------------------------------------------------------------------------------
/source/application/lua_libraries/graphical_assets/U+0020.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/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/main/source/application/lua_libraries/graphical_assets/U+F0010.png
--------------------------------------------------------------------------------
/source/fpga/modules/camera/testbenches/debayer/test_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/source/fpga/modules/camera/testbenches/debayer/test_image.png
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/source/fpga/modules/camera/testbenches/debayer/test_image_bayered.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/frame-codebase/main/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/main/source/fpga/modules/camera/testbenches/debayer/test_image_debayered.png
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/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 |
--------------------------------------------------------------------------------
/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/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 | }
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/.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 |
--------------------------------------------------------------------------------
/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 | }
--------------------------------------------------------------------------------
/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/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/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/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 |
--------------------------------------------------------------------------------
/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/fpga/modules/camera/testbenches/csi/promote.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/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
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/reportview.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/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/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/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/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/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/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/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/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/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 |
--------------------------------------------------------------------------------
/.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
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/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/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/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/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/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/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/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 |
--------------------------------------------------------------------------------
/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/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/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 |
--------------------------------------------------------------------------------
/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/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/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
--------------------------------------------------------------------------------
/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/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 |
--------------------------------------------------------------------------------
/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.
--------------------------------------------------------------------------------
/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/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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
--------------------------------------------------------------------------------
/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
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/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/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 |
--------------------------------------------------------------------------------
/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/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.
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/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
--------------------------------------------------------------------------------
/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/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 |
--------------------------------------------------------------------------------
/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);
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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);
--------------------------------------------------------------------------------
/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/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/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/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 |
--------------------------------------------------------------------------------
/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);
--------------------------------------------------------------------------------
/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/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/.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 | }
--------------------------------------------------------------------------------
/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/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);
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/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 |
--------------------------------------------------------------------------------
/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);
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/fcntl.h:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (c) 1991, 1993
3 | The Regents of the University of California. All rights reserved.
4 | c) UNIX System Laboratories, Inc.
5 | All or some portions of this file are derived from material licensed
6 | to the University of California by American Telephone and Telegraph
7 | Co. or Unix System Laboratories, Inc. and are reproduced herein with
8 | the permission of UNIX System Laboratories, Inc.
9 |
10 | Redistribution and use in source and binary forms, with or without
11 | modification, are permitted provided that the following conditions
12 | are met:
13 | 1. Redistributions of source code must retain the above copyright
14 | notice, this list of conditions and the following disclaimer.
15 | 2. Redistributions in binary form must reproduce the above copyright
16 | notice, this list of conditions and the following disclaimer in the
17 | documentation and/or other materials provided with the distribution.
18 | 3. Neither the name of the University nor the names of its contributors
19 | may be used to endorse or promote products derived from this software
20 | without specific prior written permission.
21 |
22 | THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 | ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28 | OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 | OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 | SUCH DAMAGE.
33 | */
34 | #include
35 |
--------------------------------------------------------------------------------
/libraries/picolibc/endian.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 |
36 | /**
37 | * This is just a link to the real endian.h which is located in machine.
38 | * To be compatible with linux that has endian.h in include/endian.h
39 | */
40 | #include
--------------------------------------------------------------------------------
/libraries/picolibc/sys/auxv.h:
--------------------------------------------------------------------------------
1 | /*
2 | * SPDX-License-Identifier: BSD-3-Clause
3 | *
4 | * Copyright © 2020 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 |
36 | #ifndef _SYS_AUXV_H
37 | #define _SYS_AUXV_H
38 |
39 | unsigned long getauxval(unsigned long type);
40 |
41 | #define AT_HWCAP 16
42 | #define AT_HWCAP2 26
43 |
44 | #endif /* _SYS_AUXV_H */
45 |
--------------------------------------------------------------------------------
/libraries/lua/lfunc.h:
--------------------------------------------------------------------------------
1 | /*
2 | ** $Id: lfunc.h $
3 | ** Auxiliary functions to manipulate prototypes and closures
4 | ** See Copyright Notice in lua.h
5 | */
6 |
7 | #ifndef lfunc_h
8 | #define lfunc_h
9 |
10 |
11 | #include "lobject.h"
12 |
13 |
14 | #define sizeCclosure(n) (cast_int(offsetof(CClosure, upvalue)) + \
15 | cast_int(sizeof(TValue)) * (n))
16 |
17 | #define sizeLclosure(n) (cast_int(offsetof(LClosure, upvals)) + \
18 | cast_int(sizeof(TValue *)) * (n))
19 |
20 |
21 | /* test whether thread is in 'twups' list */
22 | #define isintwups(L) (L->twups != L)
23 |
24 |
25 | /*
26 | ** maximum number of upvalues in a closure (both C and Lua). (Value
27 | ** must fit in a VM register.)
28 | */
29 | #define MAXUPVAL 255
30 |
31 |
32 | #define upisopen(up) ((up)->v.p != &(up)->u.value)
33 |
34 |
35 | #define uplevel(up) check_exp(upisopen(up), cast(StkId, (up)->v.p))
36 |
37 |
38 | /*
39 | ** maximum number of misses before giving up the cache of closures
40 | ** in prototypes
41 | */
42 | #define MAXMISS 10
43 |
44 |
45 |
46 | /* special status to close upvalues preserving the top of the stack */
47 | #define CLOSEKTOP (-1)
48 |
49 |
50 | LUAI_FUNC Proto *luaF_newproto (lua_State *L);
51 | LUAI_FUNC CClosure *luaF_newCclosure (lua_State *L, int nupvals);
52 | LUAI_FUNC LClosure *luaF_newLclosure (lua_State *L, int nupvals);
53 | LUAI_FUNC void luaF_initupvals (lua_State *L, LClosure *cl);
54 | LUAI_FUNC UpVal *luaF_findupval (lua_State *L, StkId level);
55 | LUAI_FUNC void luaF_newtbcupval (lua_State *L, StkId level);
56 | LUAI_FUNC void luaF_closeupval (lua_State *L, StkId level);
57 | LUAI_FUNC StkId luaF_close (lua_State *L, StkId level, int status, int yy);
58 | LUAI_FUNC void luaF_unlinkupval (UpVal *uv);
59 | LUAI_FUNC void luaF_freeproto (lua_State *L, Proto *f);
60 | LUAI_FUNC const char *luaF_getlocalname (const Proto *func, int local_number,
61 | int pc);
62 |
63 |
64 | #endif
65 |
--------------------------------------------------------------------------------