From fa7bbbea669beef09d4a8afa00704adfc95289d4 Mon Sep 17 00:00:00 2001 From: canarddu38 <71982379+canarddu38@users.noreply.github.com> Date: Sat, 12 Oct 2024 12:26:35 +0200 Subject: [PATCH] Add files via upload --- rootfs/usr/share/d3m0n/src/Makefile | 24 + rootfs/usr/share/d3m0n/src/README.md | 16 +- rootfs/usr/share/d3m0n/src/Type.h | 129 + .../d3m0n/src/application/appManager.cpp | 205 + .../share/d3m0n/src/application/appManager.h | 50 + .../d3m0n/src/application/layout/Controls.cpp | 101 + .../application/layout/Controls/Button.cpp | 96 + .../layout/Controls/GeneralAttributes.cpp | 176 + .../src/application/layout/Controls/Image.cpp | 88 + .../src/application/layout/Controls/Rect.cpp | 63 + .../src/application/layout/Controls/Text.cpp | 118 + .../application/layout/Controls/TextBox.cpp | 76 + .../application/layout/Controls/Window.cpp | 34 + .../src/application/layout/layoutHandler.cpp | 74 + .../src/application/layout/layoutHandler.h | 50 + .../d3m0n/src/application/source/script.cpp | 15 + .../d3m0n/src/application/source/source.cpp | 121 + .../src/application/source/sourceHandler.cpp | 69 + .../src/application/source/sourceHandler.h | 46 + rootfs/usr/share/d3m0n/src/ascii.txt | 27 + rootfs/usr/share/d3m0n/src/build.bat | 19 + rootfs/usr/share/d3m0n/src/build.sh | 22 + rootfs/usr/share/d3m0n/src/d3m0n | Bin 0 -> 520920 bytes rootfs/usr/share/d3m0n/src/d3m0n.cpp | 326 ++ .../d3m0n/src/d3m0n_package_installer.sh | 47 + rootfs/usr/share/d3m0n/src/lib/README.md | 355 ++ rootfs/usr/share/d3m0n/src/lib/bcm2835.c | 1791 ++++++ rootfs/usr/share/d3m0n/src/lib/bcm2835.h | 1894 +++++++ rootfs/usr/share/d3m0n/src/lib/display.cpp | 458 ++ rootfs/usr/share/d3m0n/src/lib/display.h | 104 + rootfs/usr/share/d3m0n/src/lib/fontx.c | 572 ++ rootfs/usr/share/d3m0n/src/lib/fontx.h | 33 + .../share/d3m0n/src/lib/fontx/FileList.txt | 23 + .../share/d3m0n/src/lib/fontx/ILGH16XB.FNT | Bin 0 -> 4113 bytes .../share/d3m0n/src/lib/fontx/ILGH24XB.FNT | Bin 0 -> 12305 bytes .../share/d3m0n/src/lib/fontx/ILGH24XF.FNT | Bin 0 -> 12305 bytes .../share/d3m0n/src/lib/fontx/ILGH32XB.FNT | Bin 0 -> 16401 bytes .../share/d3m0n/src/lib/fontx/ILGH32XF.FNT | Bin 0 -> 16401 bytes .../share/d3m0n/src/lib/fontx/ILGZ16XB.FNT | Bin 0 -> 283146 bytes .../share/d3m0n/src/lib/fontx/ILGZ16XF.FNT | Bin 0 -> 283146 bytes .../share/d3m0n/src/lib/fontx/ILGZ24XB.FNT | Bin 0 -> 636586 bytes .../share/d3m0n/src/lib/fontx/ILGZ24XF.FNT | Bin 0 -> 636586 bytes .../share/d3m0n/src/lib/fontx/ILGZ32XB.FNT | Bin 0 -> 1131402 bytes .../share/d3m0n/src/lib/fontx/ILGZ32XF.FNT | Bin 0 -> 1131402 bytes .../share/d3m0n/src/lib/fontx/ILMH16XB.FNT | Bin 0 -> 4113 bytes .../share/d3m0n/src/lib/fontx/ILMH24XB.FNT | Bin 0 -> 12305 bytes .../share/d3m0n/src/lib/fontx/ILMH24XF.FNT | Bin 0 -> 12305 bytes .../share/d3m0n/src/lib/fontx/ILMH32XB.FNT | Bin 0 -> 16401 bytes .../share/d3m0n/src/lib/fontx/ILMH32XF.FNT | Bin 0 -> 16401 bytes .../share/d3m0n/src/lib/fontx/ILMZ16XB.FNT | Bin 0 -> 283146 bytes .../share/d3m0n/src/lib/fontx/ILMZ16XF.FNT | Bin 0 -> 283146 bytes .../share/d3m0n/src/lib/fontx/ILMZ24XB.FNT | Bin 0 -> 636586 bytes .../share/d3m0n/src/lib/fontx/ILMZ24XF.FNT | Bin 0 -> 636586 bytes .../share/d3m0n/src/lib/fontx/ILMZ32XB.FNT | Bin 0 -> 1131402 bytes .../share/d3m0n/src/lib/fontx/ILMZ32XF.FNT | Bin 0 -> 1131402 bytes .../usr/share/d3m0n/src/lib/fontx/README.md | 36 + rootfs/usr/share/d3m0n/src/lib/ili9340.c | 896 +++ rootfs/usr/share/d3m0n/src/lib/ili9340.h | 49 + .../src/lib/images/RaspberryPi_240x240.jpg | Bin 0 -> 40718 bytes .../share/d3m0n/src/lib/images/Ubuntu_log.png | Bin 0 -> 48266 bytes .../share/d3m0n/src/lib/pngle/decode_png.c | 54 + .../share/d3m0n/src/lib/pngle/decode_png.h | 8 + rootfs/usr/share/d3m0n/src/lib/pngle/miniz.c | 4931 +++++++++++++++++ rootfs/usr/share/d3m0n/src/lib/pngle/miniz.h | 2 + rootfs/usr/share/d3m0n/src/lib/pngle/pngle.c | 821 +++ rootfs/usr/share/d3m0n/src/lib/pngle/pngle.h | 184 + .../d3m0n/src/lib/radiowave_generator.cpp | 47 + rootfs/usr/share/d3m0n/src/lib/tft.conf | 8 + .../share/d3m0n/src/lib/tjpgd3/decode_jpeg.c | 208 + .../share/d3m0n/src/lib/tjpgd3/decode_jpeg.h | 41 + rootfs/usr/share/d3m0n/src/lib/tjpgd3/tjpgd.c | 1153 ++++ rootfs/usr/share/d3m0n/src/lib/tjpgd3/tjpgd.h | 102 + .../usr/share/d3m0n/src/lib/tjpgd3/tjpgdcnf.h | 33 + rootfs/usr/share/d3m0n/src/lib/xpt2046.c | 160 + rootfs/usr/share/d3m0n/src/lib/xpt2046.h | 37 + rootfs/usr/share/d3m0n/src/settings.cpp | 113 + rootfs/usr/share/d3m0n/src/settings.h | 7 + rootfs/usr/share/d3m0n/src/test/build.sh | 25 + .../src/test/com.4re5.d3m0n.test.colors.d3m0n | Bin 0 -> 1594 bytes rootfs/usr/share/d3m0n/src/test/source/app | 6 + .../d3m0n/src/test/source/layouts/main.layout | 27 + .../share/d3m0n/src/test/source/src/main.src | 4 + rootfs/usr/share/d3m0n/src/test/test.d3m0n | Bin 0 -> 1331 bytes rootfs/usr/share/d3m0n/src/utils.cpp | 478 ++ rootfs/usr/share/d3m0n/src/utils.h | 170 + 85 files changed, 16821 insertions(+), 1 deletion(-) create mode 100644 rootfs/usr/share/d3m0n/src/Makefile create mode 100644 rootfs/usr/share/d3m0n/src/Type.h create mode 100644 rootfs/usr/share/d3m0n/src/application/appManager.cpp create mode 100644 rootfs/usr/share/d3m0n/src/application/appManager.h create mode 100644 rootfs/usr/share/d3m0n/src/application/layout/Controls.cpp create mode 100644 rootfs/usr/share/d3m0n/src/application/layout/Controls/Button.cpp create mode 100644 rootfs/usr/share/d3m0n/src/application/layout/Controls/GeneralAttributes.cpp create mode 100644 rootfs/usr/share/d3m0n/src/application/layout/Controls/Image.cpp create mode 100644 rootfs/usr/share/d3m0n/src/application/layout/Controls/Rect.cpp create mode 100644 rootfs/usr/share/d3m0n/src/application/layout/Controls/Text.cpp create mode 100644 rootfs/usr/share/d3m0n/src/application/layout/Controls/TextBox.cpp create mode 100644 rootfs/usr/share/d3m0n/src/application/layout/Controls/Window.cpp create mode 100644 rootfs/usr/share/d3m0n/src/application/layout/layoutHandler.cpp create mode 100644 rootfs/usr/share/d3m0n/src/application/layout/layoutHandler.h create mode 100644 rootfs/usr/share/d3m0n/src/application/source/script.cpp create mode 100644 rootfs/usr/share/d3m0n/src/application/source/source.cpp create mode 100644 rootfs/usr/share/d3m0n/src/application/source/sourceHandler.cpp create mode 100644 rootfs/usr/share/d3m0n/src/application/source/sourceHandler.h create mode 100644 rootfs/usr/share/d3m0n/src/ascii.txt create mode 100644 rootfs/usr/share/d3m0n/src/build.bat create mode 100644 rootfs/usr/share/d3m0n/src/build.sh create mode 100644 rootfs/usr/share/d3m0n/src/d3m0n create mode 100644 rootfs/usr/share/d3m0n/src/d3m0n.cpp create mode 100644 rootfs/usr/share/d3m0n/src/d3m0n_package_installer.sh create mode 100644 rootfs/usr/share/d3m0n/src/lib/README.md create mode 100644 rootfs/usr/share/d3m0n/src/lib/bcm2835.c create mode 100644 rootfs/usr/share/d3m0n/src/lib/bcm2835.h create mode 100644 rootfs/usr/share/d3m0n/src/lib/display.cpp create mode 100644 rootfs/usr/share/d3m0n/src/lib/display.h create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx.c create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx.h create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/FileList.txt create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/ILGH16XB.FNT create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/ILGH24XB.FNT create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/ILGH24XF.FNT create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/ILGH32XB.FNT create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/ILGH32XF.FNT create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/ILGZ16XB.FNT create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/ILGZ16XF.FNT create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/ILGZ24XB.FNT create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/ILGZ24XF.FNT create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/ILGZ32XB.FNT create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/ILGZ32XF.FNT create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/ILMH16XB.FNT create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/ILMH24XB.FNT create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/ILMH24XF.FNT create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/ILMH32XB.FNT create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/ILMH32XF.FNT create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/ILMZ16XB.FNT create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/ILMZ16XF.FNT create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/ILMZ24XB.FNT create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/ILMZ24XF.FNT create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/ILMZ32XB.FNT create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/ILMZ32XF.FNT create mode 100644 rootfs/usr/share/d3m0n/src/lib/fontx/README.md create mode 100644 rootfs/usr/share/d3m0n/src/lib/ili9340.c create mode 100644 rootfs/usr/share/d3m0n/src/lib/ili9340.h create mode 100644 rootfs/usr/share/d3m0n/src/lib/images/RaspberryPi_240x240.jpg create mode 100644 rootfs/usr/share/d3m0n/src/lib/images/Ubuntu_log.png create mode 100644 rootfs/usr/share/d3m0n/src/lib/pngle/decode_png.c create mode 100644 rootfs/usr/share/d3m0n/src/lib/pngle/decode_png.h create mode 100644 rootfs/usr/share/d3m0n/src/lib/pngle/miniz.c create mode 100644 rootfs/usr/share/d3m0n/src/lib/pngle/miniz.h create mode 100644 rootfs/usr/share/d3m0n/src/lib/pngle/pngle.c create mode 100644 rootfs/usr/share/d3m0n/src/lib/pngle/pngle.h create mode 100644 rootfs/usr/share/d3m0n/src/lib/radiowave_generator.cpp create mode 100644 rootfs/usr/share/d3m0n/src/lib/tft.conf create mode 100644 rootfs/usr/share/d3m0n/src/lib/tjpgd3/decode_jpeg.c create mode 100644 rootfs/usr/share/d3m0n/src/lib/tjpgd3/decode_jpeg.h create mode 100644 rootfs/usr/share/d3m0n/src/lib/tjpgd3/tjpgd.c create mode 100644 rootfs/usr/share/d3m0n/src/lib/tjpgd3/tjpgd.h create mode 100644 rootfs/usr/share/d3m0n/src/lib/tjpgd3/tjpgdcnf.h create mode 100644 rootfs/usr/share/d3m0n/src/lib/xpt2046.c create mode 100644 rootfs/usr/share/d3m0n/src/lib/xpt2046.h create mode 100644 rootfs/usr/share/d3m0n/src/settings.cpp create mode 100644 rootfs/usr/share/d3m0n/src/settings.h create mode 100644 rootfs/usr/share/d3m0n/src/test/build.sh create mode 100644 rootfs/usr/share/d3m0n/src/test/com.4re5.d3m0n.test.colors.d3m0n create mode 100644 rootfs/usr/share/d3m0n/src/test/source/app create mode 100644 rootfs/usr/share/d3m0n/src/test/source/layouts/main.layout create mode 100644 rootfs/usr/share/d3m0n/src/test/source/src/main.src create mode 100644 rootfs/usr/share/d3m0n/src/test/test.d3m0n create mode 100644 rootfs/usr/share/d3m0n/src/utils.cpp create mode 100644 rootfs/usr/share/d3m0n/src/utils.h diff --git a/rootfs/usr/share/d3m0n/src/Makefile b/rootfs/usr/share/d3m0n/src/Makefile new file mode 100644 index 00000000..18e4f5b9 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/Makefile @@ -0,0 +1,24 @@ +SRC=*.cpp lib/*.c lib/*.cpp application/*.cpp application/*/*.cpp +# application/*/*/*.cpp +OUT=d3m0n +CFLAGS:=-std=c++17 -lstdc++ -lstdc++fs -lm -DBCM -lglfw -lGL -lGLEW -lGLU -lOpenGL +LDFLAGS=-Llib -Ilib -I. +# CFLAGS= -lm -DBCM -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_imgcodecs +WARNINGS_IGNORE=-Wno-all -Wno-unused-result -Wno-unused-parameter -Wno-unused-variable -Wno-format-security -Wno-write-strings +GCC=g++ +LIBS:=-I/usr/include/opencv4 -lopencv_stitching -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dpm -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_line_descriptor -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_shape -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -lopencv_surface_matching -lopencv_highgui -lopencv_datasets -lopencv_text -lopencv_plot -lopencv_ml -lopencv_videostab -lopencv_videoio -lopencv_viz -lopencv_ximgproc -lopencv_video -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core +# $(shell pkg-config --cflags --libs opencv4) + + +all: $(OUT) + +$(OUT): $(SRC) + # $(GCC) -c lib/display.cpp -o display.o + $(GCC) $(LDFLAGS) $(WARNINGS_IGNORE) -o $@ $? $(LIBS) $(CFLAGS) + +debug: + gdb $(OUT) + +clean: + $(RM) $(OUT) + diff --git a/rootfs/usr/share/d3m0n/src/README.md b/rootfs/usr/share/d3m0n/src/README.md index 6e9f0da1..fd81ea94 100644 --- a/rootfs/usr/share/d3m0n/src/README.md +++ b/rootfs/usr/share/d3m0n/src/README.md @@ -1 +1,15 @@ -h +# d3m0n C main software + +## Startup steps +for each .d3m0n file in `/usr/share/d3m0n` and subfolder, unzip it into /usr/share/d3m0n/temp/RANDOM_TOKEN + +[example .d3m0n app](https://github.com/d3m0n-project/d3m0n_os/tree/main/rootfs/usr/share/d3m0n/apps/test_app/source) + +## App handler +Phone loads apps from temp directory created when startup, + +then reads manifest file located at `/usr/share/d3m0n/temp/APP_TOKEN/app` +- Gets app name, description, category, icon (format "key: value") +then reads main layout file (.layout) in `/usr/share/d3m0n/temp/APP_TOKEN/layouts/main.layout` (example [here](https://github.com/d3m0n-project/d3m0n_os/blob/main/rootfs/usr/share/d3m0n/apps/test_app/source/layouts/main.layout)) + +then execute code (.src) in `/usr/share/d3m0n/temp/APP_TOKEN/src/main.src` (example [here](https://github.com/d3m0n-project/d3m0n_os/blob/main/rootfs/usr/share/d3m0n/apps/test_app/source/src/main.src)) \ No newline at end of file diff --git a/rootfs/usr/share/d3m0n/src/Type.h b/rootfs/usr/share/d3m0n/src/Type.h new file mode 100644 index 00000000..f32ae2e5 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/Type.h @@ -0,0 +1,129 @@ +#ifndef CTRL_TYPE +#define CTRL_TYPE +#include +#include +#include +#include +#include +#include +#include +using namespace std; + + +namespace DataTypes +{ + struct Rect { + int X; + int Y; + int X2; + int Y2; + + Rect() { + this->X = 0; + this->Y = 0; + this->X2 = 0; + this->Y2 = 0; + } + + Rect(int x, int y, int x2, int y2) { + this->X = x; + this->Y = y; + this->X2 = x2; + this->Y2 = y2; + } + }; + + struct Point { + int X; + int Y; + Point(int x, int y) { + this->X = x; + this->Y = y; + } + Point() : X(0), Y(0) {} + + Point operator+(int x){ + return Point(this->X + x, this->Y + x); + } + }; + struct Size { + int Width; + int Height; + Size(int x, int y) { + this->Width = x; + this->Height = y; + } + Size() : Width(0), Height(0) {} + }; + struct Control { + // display* display1; + string name; + DataTypes::Point Location = DataTypes::Point(0, 0); + DataTypes::Size size = DataTypes::Size(100, 50); + bool Visible=true; + bool Enabled=true; + ushort BackColor = 0x0000; + ushort ForeColor = 0xffff; + + Control() {} + + virtual void draw() {}; // Draws the control on screen. + + Rect getRect() + { + int x1 = 240-this->Location.X; + int y1 = this->Location.Y; + + int x2 = x1-this->size.Width; + int y2 = y1+this->size.Height; + + x1-=this->size.Width; + x2-=this->size.Width; + + return Rect(x2, y1, x1, y2); + } + }; + struct Window { + DataTypes::Size size; + ushort BackColor = 0x0000; + ushort ForeColor = 0xffff; + + vector Controls; + + void Add(Control* ctrl) { + Controls.push_back(ctrl); + } + + void Update() { + printf("Updating window\n"); + // lcdFillScreen(BackColor); + size_t size = Controls.size(); + printf("Size of Window's Controls vector: %zu\n", size); + + for (Control* control : Controls) { + if(control != nullptr) { + printf(("name: "+control->name+"\n").c_str()); + printf(("X: "+to_string(control->Location.X)+"\n").c_str()); + printf(("Y: "+to_string(control->Location.Y)+"\n").c_str()); + printf(("Width: "+to_string(control->size.Width)+"\n").c_str()); + printf(("Height: "+to_string(control->size.Height)+"\n").c_str()); + + + control->draw(); + } + } + } + + }; + + struct BitmapPoint { + int x; + int y; + ushort color; + }; + struct Bitmap { + vector points; + DataTypes::Size size; + }; +}; +#endif \ No newline at end of file diff --git a/rootfs/usr/share/d3m0n/src/application/appManager.cpp b/rootfs/usr/share/d3m0n/src/application/appManager.cpp new file mode 100644 index 00000000..7b4394f7 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/application/appManager.cpp @@ -0,0 +1,205 @@ +#include "appManager.h" + +#include "../settings.h" +#include +#include "layout/layoutHandler.h" +#include "source/sourceHandler.h" +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include "display.h" + + +namespace appManager { + vector appsPaths; + vector appsPackages; + + void unzipFile(string path, string output) + { + string command = (string)"unzip '"+path+(string)"' -d '"+output+(string)"' > /dev/null"; + system(command.c_str()); + } + + Application loadApp(char* appPath) + { + // loads app by unziping appPath file into /usr/share/d3m0n/temp/RANDOM_TOKEN + const char* directory = GetPath().c_str(); // Directory to search .d3m0n files in + // long randomToken = rand(); // Simple random token, consider a better random generation method + random_device rd; + mt19937 gen(rd()); // Mersenne Twister pseudo-random number generator + // Define a distribution (e.g., uniform distribution between 0 and 99) + uniform_int_distribution dis(0, 1316134911); + long randomToken = dis(gen); + char temp_path[256]; + snprintf(temp_path, sizeof(temp_path), (GetPath()+(string)"/temp/%lu").c_str(), randomToken); + + log((string)"Unpacking '"+appPath+(string)"' ==> '"+temp_path+(string)"'", LogStatus::Info); + if(!filesystem::exists(appPath)) + { + log("Application not found.", LogStatus::Error); + return Application{}; + } + // Create the output directory + mkdir(temp_path, 0777); // Note: Check return value in real code for errors + + unzipFile(appPath, temp_path); + // TODO: add unzip + // for (const auto & entry : fs::directory_iterator(directory)) { + + // string test = (string)entry.path(); + // printf(test.c_str()); + // } + + Application newApp; + //logn((string)temp_path, ConsoleColor::Red); + string path2 = (string)temp_path+(string)"/app"; + char* path = new char[path2.length() + 1]; + strcpy(path, path2.c_str()); + string package = (string)getSetting("package", path); + // adds app to list of apps + appsPaths.push_back(temp_path); + appsPackages.push_back(package); + newApp.name = (string)getSetting("name", path); + newApp.description = (string)getSetting("description", path); + newApp.package = package; + newApp.icon = (string)getSetting("icon", path); + newApp.perms = (string)getSetting("perms", path); + newApp.start_path = (string)getSetting("start_path", path); + newApp.category = (string)getSetting("category", path); + newApp.temp_path = (string)temp_path; + return newApp; + } + string GetAppPathByPackage(string package) { + int i=0; + for (const string& str : appsPackages) { + if(str == package) { + return appsPaths.at(i); + } + i++; + } + return "not found"; + } + void runApp(Application* app) + { + // runs app from Application struct. Gets path, runs /layout/main.layout then /src/main.src + + if(fs::exists((app->temp_path+(string)"/layouts/main.layout").c_str())) { + log("Main layout found, Running...", LogStatus::Success); + log((string)" Name => '"+app->name+(string)"'", LogStatus::Info); + log((string)" Desc => '"+app->description+(string)"'", LogStatus::Info); + log((string)" Icon => '"+app->icon+(string)"'", LogStatus::Info); + log((string)" Package => '"+app->package+(string)"'", LogStatus::Info); + log((string)" Perms => '"+app->perms+(string)"'", LogStatus::Info); + log((string)" Category => '"+app->category+(string)"'", LogStatus::Info); + log((string)" Path => '"+app->temp_path+(string)"'", LogStatus::Info); + log((string)" Start => '"+app->start_path+(string)"'", LogStatus::Info); + logn("", ConsoleColor::Reset); + } else { + log("main.layout not found for app '"+app->name+"'/'"+app->package+"'", LogStatus::Error); + return; + } + + // init Window + DataTypes::Window* window = new DataTypes::Window(); + window->size = DataTypes::Size(240, 320); + app->mainWindow = window; + app->windows.push_back(window); + // starts displaying app + layoutHandler::runLayout(app, app->temp_path+(string)"/layouts/main.layout"); + sourceHandler::runSource(app, app->temp_path+(string)"/src/main.src"); + } + string GetAppList() { + string to_return=""; + to_return+=logn("Current loaded apps", ConsoleColor::Blue); + int i=0; + for (const string& package : appsPackages) { + string appFile = appsPaths.at(i)+"/app"; + to_return+=logn(" => "+(string)(getSetting("name", appFile.data()))+", package: "+package, ConsoleColor::Blue); + i++; + } + return to_return; + + } + void launchApp(Application app) { + display::Clear(); + // log("CLICKED !!! "+app.name, LogStatus::Critical); + runApp(&app); + callEvent(&app, "Window.OnCreate"); + display::drawRect(0, 0, 100, 100, Colors::Red, true); + app.mainWindow->Update(); + log("Successfully runned '"+app.name+"'!", LogStatus::Success); + } + string mainScreenInit() { + string output=""; + printf("\n"); + output += log("Clearing loaded apps...", LogStatus::Loading); + appsPackages.clear(); + appsPaths.clear(); + string commandClean = "rm -rf '"+GetPath()+"/temp/*'"; + system(commandClean.c_str()); + output += log("appManager is Loading mainscreen...", LogStatus::Loading); + // display2->drawRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, Colors::Green, true); + // init main desktop screen + string wallpaper = GetPath()+"/wallpapers/"+getSetting("wallpaper", (char*)GetConfig())+".png"; + display::drawImage(DataTypes::Point(0, 0), wallpaper, SCREEN_WIDTH, SCREEN_HEIGHT, false); + output += log("DESKTOP initiated wallpaper => '"+wallpaper+"'", LogStatus::Success); + + output += logn("Loaded applications: ", ConsoleColor::Cyan); + + int app_count=0; + Application temp; + string appicon; + int slot_x, slot_y = 0; + int app_padding = 10; + int appPerRow = 2; + int appPerColumn = 4; + int icon_size = SCREEN_WIDTH/appPerRow-20; + slot_x = 0; + + for (const auto & entry : fs::directory_iterator(GetAppPath())) { + if(endsWith(entry.path(), ".d3m0n")) { + if(slot_x >= appPerRow) { + slot_y++; + slot_x=0; + } + + + output += logn(" => "+(string)entry.path(), ConsoleColor::Cyan); + printf(" "); output += " "; // for shell + temp = loadApp(((string)entry.path()).data()); + output += logn(" x: "+to_string(slot_x)+", y: "+to_string(slot_y), ConsoleColor::Grey); + + if(contains(temp.icon, "/")) { + appicon=temp.icon; + } else { + appicon=display::GetThemeIcon(temp.icon); + } + DataTypes::Point appRect = DataTypes::Point(slot_x*(icon_size+app_padding)+20, slot_y*(icon_size+app_padding)); + // display1->drawRect(appRect.X, appRect.Y, appRect.X+icon_size+10, appRect.Y+icon_size+10, Colors::Cyan, true); + display::drawImage(appRect+10, appicon, icon_size-20, icon_size-20, false); + display::drawText(20+slot_x*(icon_size+app_padding), slot_y*(icon_size+app_padding)+icon_size-8, 1, temp.name, false, Colors::White); + + display::registerEvent(UIEvent::OnClick, DataTypes::Rect(appRect.X, appRect.Y, appRect.X+icon_size, appRect.Y+icon_size+20), [](Application app) { launchApp(app); }, temp); + slot_x++; + } + } + + + + output += "\n"; + printf("\n"); + return output; + } +}; \ No newline at end of file diff --git a/rootfs/usr/share/d3m0n/src/application/appManager.h b/rootfs/usr/share/d3m0n/src/application/appManager.h new file mode 100644 index 00000000..af0efe5c --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/application/appManager.h @@ -0,0 +1,50 @@ +#ifndef APPMANAGER_H +#define APPMANAGER_H + +#include "../settings.h" +#include +#include "layout/layoutHandler.h" +#include "source/sourceHandler.h" +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + + + +namespace fs = filesystem; +using namespace std; + +namespace appManager { + extern vector appsPaths; + extern vector appsPackages; + + // appManager() {} + // ~appManager() {} + + extern void unzipFile(string path, string output); + + + extern Application loadApp(char* appPath); + extern string GetAppPathByPackage(string package); + extern void runApp(Application* app); + extern string GetAppList(); + + + extern void launchApp(Application app); + + extern string mainScreenInit(); +}; + +#endif // !APPMANAGER_H \ No newline at end of file diff --git a/rootfs/usr/share/d3m0n/src/application/layout/Controls.cpp b/rootfs/usr/share/d3m0n/src/application/layout/Controls.cpp new file mode 100644 index 00000000..a860dd47 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/application/layout/Controls.cpp @@ -0,0 +1,101 @@ +#include "layoutHandler.h" + + +#include "./Controls/GeneralAttributes.cpp" +#include "./Controls/Window.cpp" +#include "./Controls/Text.cpp" +#include "./Controls/Image.cpp" +#include "./Controls/TextBox.cpp" +#include "./Controls/Button.cpp" +#include "./Controls/Rect.cpp" + + + +template +void parseAttributes(T* ctrl, string controlAttributes, void (&function)(T* ctrl2, string key2, string value2)) { + istringstream iss(controlAttributes); + string token; + string token2; + + // extract attributes from the attribute string + bool FirstLine = true; + while (getline(iss, token, ';')) { + // create pairs of key=value + istringstream line(token); + + string Key; + while (getline(line, token2, '=')) { + if(FirstLine) { + Key = delete_space(token2.c_str()); + } + else + { + function(ctrl, Key, token2); + // cout << " Value: " << token2 << endl; + } + FirstLine=!FirstLine; + } + + } +} + +Control* loadControl(string controlName, string controlAttributes) { + Control* controlElement = nullptr; + + if(controlName == "Window") { + layout::Window(controlName, controlAttributes); + } + else if(controlName=="Text") { + layout::Text* temp = new layout::Text(controlAttributes.c_str()); + controlElement = temp->Get(); + parseAttributes(temp, controlAttributes, layout::Text::parseAttributes); + } + // else if(controlName=="RawHtml") { + // return layout.RawHtml(controlAttributes); + // } + else if(controlName=="TextBox") { + layout::TextBox* temp = new layout::TextBox(controlAttributes.c_str()); + controlElement = temp->Get(); + parseAttributes(temp, controlAttributes, layout::TextBox::parseAttributes); + } + // else if(controlName=="ListView") { + // return layout.ListView(controlAttributes, this, ctrl as ListView); + // } + // else if(controlName=="ProgressBar") { + // return layout.ProgressBar(controlAttributes, this, ctrl as ProgressBar); + // } + // else if(controlName=="CheckBox") { + // return layout.CheckBox(controlAttributes, this, ctrl as CheckBox); + // } + // else if(controlName=="RadioButton") { + // return layout.RadioButton(controlAttributes, this, ctrl as RadioButton); + // } + else if(controlName=="Rect") { + layout::Rect* temp = new layout::Rect(controlAttributes.c_str()); + controlElement = temp->Get(); + parseAttributes(temp, controlAttributes, layout::Rect::parseAttributes); + } + // else if(controlName=="Switch") { + // return layout.Switch(controlAttributes, this, ctrl as CheckBox); + // } + else if(controlName=="Image") { + layout::Image* temp = new layout::Image(controlAttributes.c_str()); + controlElement = temp->Get(); + parseAttributes(temp, controlAttributes, layout::Image::parseAttributes); + } + else if(controlName=="Button") { + layout::Button* temp = new layout::Button(controlAttributes.c_str()); + controlElement = temp->Get(); + parseAttributes(temp, controlAttributes, layout::Button::parseAttributes); + } + // else if(controlName=="Vscroll") { + // return layout.Vscroll(controlAttributes, this, ctrl as Panel); + // } + // else if(controlName=="Hscroll") { + // return layout.Hscroll(controlAttributes, this, ctrl as Panel); + // } + // else if(controlName=="RoundButton") { + // return layout.RoundButton(controlAttributes, this, ctrl as RoundButton); + // } + return controlElement; +} \ No newline at end of file diff --git a/rootfs/usr/share/d3m0n/src/application/layout/Controls/Button.cpp b/rootfs/usr/share/d3m0n/src/application/layout/Controls/Button.cpp new file mode 100644 index 00000000..7c7ed607 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/application/layout/Controls/Button.cpp @@ -0,0 +1,96 @@ +#include "../../../settings.h" +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include "Type.h" +#include +#include + + +using namespace std; +using namespace DataTypes; + +namespace layout { +class Button : public Control { + public: + string text=""; + Bitmap image; + ushort BackColor = Colors::Black; + ushort ForeColor = Colors::White; + int FontSize = 10; + bool Center = false; + int FontPadding = 0; + DataTypes::Size defaultSize = DataTypes::Size(100, 50); + bool Bold = false; + + Control* Get() { + return this; + } + + void draw() override + { + + int x1 = 240-this->Location.X; + int y1 = this->Location.Y; + + int x2 = x1-this->size.Width; + int y2 = y1+this->size.Height; + + // check if size not changed + if(defaultSize.Width == this->size.Width && defaultSize.Height == this->size.Height) + { + // then define width with text size + this->size.Width = this->text.length()*(this->FontSize+this->FontPadding); + } + + + // ili9340.lcdDrawFillRect((ushort)(x2-Padding), (ushort)(y1-Padding), (ushort)(x1+Padding), (ushort)(y2+Padding), this->BackColor); + // // text size pad x y center + // font.WriteString(this->Text, this->FontSize, this->FontPadding, (ushort)x1, (ushort)y1, this->ForeColor, this->Center, (ushort)this->Size.Width, (ushort)this->Size.Height); + + // // debug top-right + // ili9340.lcdDrawPixel((ushort)x2, (ushort)y1, Colors.Yellow); + // // and bottom-left pixels + // ili9340.lcdDrawPixel((ushort)x1, (ushort)y2, Colors.Green); + } + + + Button(string args) { + // printf("Button loaded with arguments: %s\n", args.c_str()); + + } + static void parseAttributes(Button* ctrl, string key, string value) { + GeneralAttributes::parseAttributes(ctrl->Get(), key, value); + + if(key == "content") { + ctrl->text=value; + } else if(key == "font_size") { + ctrl->FontSize = stod(value); + } else if(key == "text_align") { + // TODO + printf("TODO text_align\n"); + } else if(key == "image") { + // TODO + printf("TODO image\n"); + } + else if(key == "bold") { + // TODO + printf("TODO bold\n"); + ctrl->Bold = true; + } + + } + + }; +}; \ No newline at end of file diff --git a/rootfs/usr/share/d3m0n/src/application/layout/Controls/GeneralAttributes.cpp b/rootfs/usr/share/d3m0n/src/application/layout/Controls/GeneralAttributes.cpp new file mode 100644 index 00000000..e3350de0 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/application/layout/Controls/GeneralAttributes.cpp @@ -0,0 +1,176 @@ +#include "../../../settings.h" +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include "Type.h" +#include + +using namespace std; + + +namespace layout { +class GeneralAttributes { + public: + template + static T parseAttributes(T ctrl, string key, string value) { + removeQuotes(value); + // parent="ControlName"; + + // color="255, 255, 255"; + // bg_color="0, 0, 0"; + + + try { + // name + if(key == "name") { + ctrl->name = value; + } + // visible + else if(key == "visible") { + ctrl->Visible = value == "true" ? true : false; + } + // width, height + else if(startsWith(key,"width")) { + if(endsWith(value, "%")) { + float percent = stof(value.substr(0, value.length()))/100; + ctrl->size.Width = round(percent*SCREEN_WIDTH); + } else { + ctrl->size.Width = stoi(value); + } + } else if(startsWith(key,"height")) { + if(endsWith(value, "%")) { + float percent = stof(value.substr(0, value.length()))/100; + ctrl->size.Height = round(percent*SCREEN_HEIGHT); + } else { + ctrl->size.Height = stoi(value); + } + } + // margin + else if(startsWith(key,"margin")) { + if(key == "margin_top") { printf("TODO margin\n"); } + else if(key == "margin_left") { printf("TODO margin\n"); } + else if(key == "margin_right") { printf("TODO margin\n"); } + else if(key == "margin_bottom") { printf("TODO margin\n"); } + } + // position + else if(key == "location") { + if(value.find(",") != string::npos) { + string posX = delete_space(Split(value, ',', true)); + string posY = delete_space(Split(value, ',', false)); + + // enable percentage ratio for X + if(posX.find("%") != string::npos) { + float percent = stof(posX.substr(0, value.length()))/100; + ctrl->Location.X = round(percent*SCREEN_WIDTH); + } + else { + ctrl->Location.X = stoi(posX); + } + // do the same but for Y + if(posY.find("%") != string::npos) { + float percent = stof(posY.substr(0, value.length()))/100; + ctrl->Location.Y = round(percent*SCREEN_HEIGHT); + } + else { + ctrl->Location.Y = stoi(posY); + } + } + else { + // handle arbitrary locations + if(value == "top") { + ctrl->Location.X = (SCREEN_WIDTH/2)-(ctrl->size.Width/2); + ctrl->Location.Y = 0; + } else if(value == "top_left") { + ctrl->Location.X = 0; + ctrl->Location.Y = 0; + } else if(value == "top_right") { + ctrl->Location.X = SCREEN_WIDTH-ctrl->size.Width; + ctrl->Location.Y = 0; + } else if(value == "bottom") { + ctrl->Location.X = SCREEN_WIDTH/2-ctrl->size.Width/2; + ctrl->Location.Y = SCREEN_HEIGHT-ctrl->size.Height; + } else if(value == "bottom_left") { + ctrl->Location.X = 0; + ctrl->Location.Y = SCREEN_HEIGHT-ctrl->size.Height; + } else if(value == "bottom_right") { + ctrl->Location.X = SCREEN_WIDTH-ctrl->size.Width; + ctrl->Location.Y = SCREEN_HEIGHT-ctrl->size.Height; + } else if(value == "left") { + ctrl->Location.X = 0; + ctrl->Location.Y = (SCREEN_HEIGHT/2)-(ctrl->size.Height/2); + } else if(value == "right") { + ctrl->Location.X = SCREEN_WIDTH-ctrl->size.Width; + ctrl->Location.Y = (SCREEN_HEIGHT/2)-(ctrl->size.Height/2); + } else if(value == "center") { + ctrl->Location.X = (SCREEN_WIDTH/2)-(ctrl->size.Width/2); + ctrl->Location.Y = (SCREEN_HEIGHT/2)-(ctrl->size.Height/2); + } + } + } + // margins + else if(key == "margin_top") { + if(value.find("%") != string::npos) { + float percent = stof(value.substr(0, value.length()))/100; + ctrl->Location.Y += round(percent*SCREEN_HEIGHT); + } else { + ctrl->Location.Y += stoi(value); + } + } + else if(key == "margin_left") { + if(value.find("%") != string::npos) { + float percent = stof(value.substr(0, value.length()))/100; + ctrl->Location.X += round(percent*SCREEN_HEIGHT); + } else { + ctrl->Location.X += stoi(value); + } + } + else if(key == "margin_right") { + if(value.find("%") != string::npos) { + float percent = stof(value.substr(0, value.length()))/100; + ctrl->Location.X -= round(percent*SCREEN_HEIGHT); + } else { + ctrl->Location.X -= stoi(value); + } + } + else if(key == "margin_bottom") { + if(value.find("%") != string::npos) { + float percent = stof(value.substr(0, value.length()))/100; + ctrl->Location.Y -= round(percent*SCREEN_HEIGHT); + } else { + ctrl->Location.Y -= stoi(value); + } + } + // color, bg_color + else if(key == "color") { + ctrl->ForeColor = (ushort)GetColor(value); + logn("Set ForeColor to '"+value+"' => "+to_string(ctrl->ForeColor), ConsoleColor::Red); + } else if(key == "bg_color") { + ctrl->BackColor = (ushort)GetColor(value); + logn("Set BackColor to '"+value+"' => "+to_string(ctrl->BackColor), ConsoleColor::Red); + } + // enabled + else if(key == "enabled") { + ctrl->Enabled = value == "true" ? true : false; + } + } + catch(exception e) { + log("Error in layout '"+key+"': "+e.what(), LogStatus::Error); + } + + return ctrl; + + } + + }; +}; \ No newline at end of file diff --git a/rootfs/usr/share/d3m0n/src/application/layout/Controls/Image.cpp b/rootfs/usr/share/d3m0n/src/application/layout/Controls/Image.cpp new file mode 100644 index 00000000..86a2e894 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/application/layout/Controls/Image.cpp @@ -0,0 +1,88 @@ +#include "../../../settings.h" +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include "Type.h" +#include +#include + + +using namespace std; + +namespace layout { +class Image : public Control { + public: + string src; + ushort BackColor = Colors::Black; + bool reverse = false; + + Control* Get() { + return this; + } + + DataTypes::Rect getRect() + { + int x1 = 240-this->Location.X; + int y1 = this->Location.Y; + + int x2 = x1-this->size.Width; + int y2 = y1+this->size.Height; + + x1-=this->size.Width; + x2-=this->size.Width; + + return DataTypes::Rect(x2, y1, x1, y2); + } + + void draw() override + { + display::drawImage(DataTypes::Point(this->Location.X, this->Location.Y), this->src, this->size.Width, this->size.Height, false); + log("Drawing image!", LogStatus::Warning); + } + + + Image(string args) { + // printf("Image loaded with arguments: %s\n", args.c_str()); + + } + static void parseAttributes(Image* ctrl, string key, string value) { + // logn(to_string(ctrl->ForeColor)+" <= color", ConsoleColor::Yellow); + ctrl = static_cast(GeneralAttributes::parseAttributes(ctrl, key, value)); + // logn(to_string(ctrl->ForeColor)+" <= color", ConsoleColor::Yellow); + + if(key == "src") { + // TODO + removeQuotes(value); + if(startsWith(value, "http")){ + string command = "curl -o '"+GetPath()+"/temp/image.png' '"+value+"'"; + system(command.c_str()); + ctrl->src=GetPath()+"/temp/image.png"; + } + else if(filesystem::exists(value)) { + ctrl->src=value; + } + else { + ctrl->src=display::GetThemeIcon(value); + } + + } else if(key == "mode") { + // TODO + printf("TODO mode\n"); + // ctrl->FontSize = 0; + } + + } + + }; +}; \ No newline at end of file diff --git a/rootfs/usr/share/d3m0n/src/application/layout/Controls/Rect.cpp b/rootfs/usr/share/d3m0n/src/application/layout/Controls/Rect.cpp new file mode 100644 index 00000000..d4fb9714 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/application/layout/Controls/Rect.cpp @@ -0,0 +1,63 @@ +#include "../../../settings.h" +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include "Type.h" +#include +#include + + +using namespace std; + + +namespace layout { +class Rect : public Control { + public: + ushort BackColor = Colors::Black; + DataTypes::Size size = DataTypes::Size(100, 100); // Default size is 100x100 + bool scroll = false; + + Control* Get() { + return this; + } + + void draw() override + { + int x1 = SCREEN_WIDTH-this->Location.X; + int y1 = this->Location.Y; + + int x2 = x1-this->size.Width; + int y2 = y1+this->size.Height; + + + display::drawRect(x2, y1, x1, y2, this->BackColor, true); + logn("DISPLAYING Rect '"+this->name+"' color: "+to_string(this->BackColor), ConsoleColor::DarkMagenta); + } + + + Rect(string args) { + // printf("Rect loaded with arguments: %s\n", args.c_str()); + + } + static void parseAttributes(Rect* ctrl, string key, string value) { + ctrl = static_cast(GeneralAttributes::parseAttributes(ctrl, key, value)); + + if(key == "scroll") { + ctrl->scroll=(value=="true")?true:false; + } + + } + + }; +}; \ No newline at end of file diff --git a/rootfs/usr/share/d3m0n/src/application/layout/Controls/Text.cpp b/rootfs/usr/share/d3m0n/src/application/layout/Controls/Text.cpp new file mode 100644 index 00000000..d2ac2dbd --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/application/layout/Controls/Text.cpp @@ -0,0 +1,118 @@ +#include "../../../settings.h" +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include "Type.h" +#include +#include + + +using namespace std; +using namespace DataTypes; + + + +namespace layout { +class Text : public Control { + public: + string text = ""; + ushort BackColor = Colors::White; + ushort ForeColor = Colors::Black; + bool Bold = false; + int FontSize = 10; + bool Center = false; + int FontPadding = 0; + + Control* Get() { + return this; + } + + void draw() override + { + int x1 = 240-this->Location.X; + int y1 = this->Location.Y; + + int x2 = x1-this->size.Width; + int y2 = y1+this->size.Height; + + // Get text width and height + int text_width = this->FontSize*this->text.length(); + int text_height = this->FontSize*2; + + + // sets width&height to text size if not changed + // log("Text size not def", LogStatus::Critical); + if(this->size.Width == 100 && this->size.Height == 50) { + log("SIZE NOT DEF => OVERRIDE", LogStatus::Critical); + this->size = DataTypes::Size(text_width, text_height); + } + else { + // removes extra chars that are out of rect + if(this->size.Width > text_width) { + log("TOO LONG FOR TEXT", LogStatus::Critical); + logn(this->text, ConsoleColor::DarkGreen); + this->text.substr(0, this->text.length()-(this->size.Width-text_width)/FontSize); + logn(this->text, ConsoleColor::DarkGreen); + } + } + + if(isDebugMode()) { + this->Location.Y += this->size.Height; + } + + + // display BackGround if not default + // log("Disabled backcolor: Text", LogStatus::Critical); + if(this->BackColor != Colors::White) { + display::drawRect(x1, y1, x2, y2, this->BackColor, true); + } + display::drawText(this->Location.X, this->Location.Y, this->FontSize, this->text, this->Bold, this->ForeColor); + // font.WriteString(this.Text, this.FontSize, this.FontPadding, (ushort)x1, (ushort)y1, this.ForeColor, this.Center, (ushort)this.Size.Width, (ushort)this.Size.Height); + } + + + Text(string args) { + // printf("Text loaded with arguments: %s\n", args.c_str()); + + } + static void parseAttributes(Text* ctrl, string key, string value) { + ctrl = static_cast(GeneralAttributes::parseAttributes(ctrl, key, value)); + + if(key == "content") { + removeQuotes(value); + ctrl->text = value; + } else if(key == "font_size") { + // TODO + try { + removeQuotes(value); + ctrl->FontSize = stoi(value); + } catch(exception) { + log("Bad FontSize (should be a int)", LogStatus::Error); + } + } + else if(key == "text_align") { + // TODO + printf("TODO text_align\n"); + ctrl->Center = true; + } + else if(key == "bold") { + // TODO + printf("TODO bold\n"); + ctrl->Bold = true; + } + + } + + }; +}; \ No newline at end of file diff --git a/rootfs/usr/share/d3m0n/src/application/layout/Controls/TextBox.cpp b/rootfs/usr/share/d3m0n/src/application/layout/Controls/TextBox.cpp new file mode 100644 index 00000000..134efef5 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/application/layout/Controls/TextBox.cpp @@ -0,0 +1,76 @@ +#include "../../../settings.h" +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include "Type.h" +#include +#include + + +using namespace std; + + +namespace layout { +class TextBox : public Control { + public: + string text=""; + ushort BackColor = Colors::Black; + ushort ForeColor = Colors::White; + int FontSize = 10; + bool Center = false; + int FontPadding = 0; + bool Bold = false; + + Control* Get() { + return this; + } + + void draw() override + { + int x1 = 240-this->Location.X; + int y1 = this->Location.Y; + + int x2 = x1-this->size.Width; + int y2 = y1+this->size.Height; + + display::drawText(x1, y1, this->FontSize, this->text, this->Bold, this->ForeColor); + // font.WriteString(this->Text, this->FontSize, this->FontPadding, (ushort)x1, (ushort)y1, this->ForeColor, this->Center, (ushort)this->Size.Width, (ushort)this->Size.Height); + } + + + TextBox(string args) { + // printf("TextBox loaded with arguments: %s\n", args.c_str()); + + } + static void parseAttributes(TextBox* ctrl, string key, string value) { + GeneralAttributes::parseAttributes(ctrl->Get(), key, value); + + if(key == "content") { + ctrl->text=value; + } else if(key == "font_size") { + ctrl->FontSize = stod(value); + } else if(key == "text_align") { + // TODO + printf("TODO text_align\n"); + } + else if(key == "bold") { + // TODO + printf("TODO bold\n"); + ctrl->Bold = true; + } + + } + + }; +}; \ No newline at end of file diff --git a/rootfs/usr/share/d3m0n/src/application/layout/Controls/Window.cpp b/rootfs/usr/share/d3m0n/src/application/layout/Controls/Window.cpp new file mode 100644 index 00000000..6b4039e5 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/application/layout/Controls/Window.cpp @@ -0,0 +1,34 @@ +#include "../../../settings.h" +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include "display.h" + + +using namespace std; + + + +namespace layout { +class Window { + public: + Window(string key, string value) { + if(key == "bg_color") { + removeQuotes(value); + display::drawRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, GetColor(value), true); + } + } + }; +}; \ No newline at end of file diff --git a/rootfs/usr/share/d3m0n/src/application/layout/layoutHandler.cpp b/rootfs/usr/share/d3m0n/src/application/layout/layoutHandler.cpp new file mode 100644 index 00000000..4512a33e --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/application/layout/layoutHandler.cpp @@ -0,0 +1,74 @@ +#include "layoutHandler.h" + + + +namespace layoutHandler { + void parseLayout(const string& path) + { + fstream file(path, ios::in | ios::out); // Open file in read-write mode + if (!file.is_open()) { + log("Failed to parse (error while opening file)", LogStatus::Error); + return; + } + stringstream buffer; + buffer << file.rdbuf(); + string fileContent = buffer.str(); + if(startsWith(fileContent, "#alrparsed")) { + // already parched file + return; + } + + // parse into one-liners + replaceAll(fileContent, ";\r\n", ";"); + replaceAll(fileContent, ":\r\n", ":"); + file.close(); + // write out + system(((string)"rm -rf '"+path+(string)"' && cat /dev/null > '"+path+"'").c_str()); + fstream file2(path, ios::in | ios::out); // Open file in read-write mode + if (!file2.is_open()) { + log("Failed to parse (error while opening file)", LogStatus::Error); + return; + } + file2 << "#alrparsed (header, do not remove)" << endl << fileContent << endl; + file2.close(); + + // logn(fileContent, ConsoleColor::Green); + log((string)"Parsed '"+path+(string)"'", LogStatus::Success); + } + void runLayout(Application* app, const string& path) + { + // parsing layout + layoutHandler::parseLayout(path); + ifstream file(path); + if (!file.is_open()) { + log("Failed to open the layout file.", LogStatus::Error); + return; + } + string line; + int line_number = 0; + while (getline(file, line)) { + line_number++; + if(line[0] == '#') continue; // Skip comments + if(line.empty() || line[0] == '\n' || line[0] == '\r') continue; // Empty lines are skipped as well + + string delimiter = ":"; + size_t pos = line.find(delimiter); + + if (pos != string::npos) { // If delimiter found + // Extract substrings + string controlName = line.substr(0, pos); + string controlAttributes = line.substr(pos + delimiter.length()); + + // loads controls and add it to current window + Control* control = loadControl(controlName, controlAttributes); + if (control != nullptr) { + app->mainWindow->Add(control); + // log("New CTRL -> " + control->name, LogStatus::Critical); + } + } else { + log("Error in layoutFile '"+path+"', invalid Control definition structure\nCause by '"+line+"' at l."+to_string(line_number), LogStatus::Error); + } + } + file.close(); // Close the file + } +}; diff --git a/rootfs/usr/share/d3m0n/src/application/layout/layoutHandler.h b/rootfs/usr/share/d3m0n/src/application/layout/layoutHandler.h new file mode 100644 index 00000000..d0c44093 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/application/layout/layoutHandler.h @@ -0,0 +1,50 @@ +#ifndef LAYOUTHANDLER_H +#define LAYOUTHANDLER_H + +#include "../../settings.h" +#include +#include +#include +#include +#include +#include + +namespace fs = std::filesystem; +using namespace std; +using namespace DataTypes; + +// Forward declaration of Application and Control classes if not defined in settings.h or utils.h +class Application; +// class Control; + +namespace Controls { + const int Window = 0; + const int Text = 1; + const int RawHtml = 2; + const int TextBox = 3; + const int ListView = 4; + const int ProgressBar = 5; + const int CheckBox = 6; + const int RadioButton = 7; + const int Rect = 8; + const int Switch = 9; + const int Image = 10; + const int Button = 11; + const int Vscroll = 12; + const int Hscroll = 13; + const int RoundButton = 14; +} + +template +extern void parseAttributes(T* ctrl, string controlAttributes, void (&function)(T* ctrl2, string key2, string value2)); +extern Control* loadControl(string controlName, string controlAttributes); + +namespace layoutHandler { + // Parses the layout file at the given path + extern void parseLayout(const string& path); + + // Runs the layout file for the given application + extern void runLayout(Application* app, const string& path); +}; + +#endif // LAYOUTHANDLER_H diff --git a/rootfs/usr/share/d3m0n/src/application/source/script.cpp b/rootfs/usr/share/d3m0n/src/application/source/script.cpp new file mode 100644 index 00000000..5df91e82 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/application/source/script.cpp @@ -0,0 +1,15 @@ +#include "sourceHandler.h" + + +void script::callFunction(string name, list args) { + try { + if(name == "log") { log(args.front(), LogStatus::Info); return; } + else if(name == "logn") { logn(args.front(), ConsoleColor::get(args.back())); return; } + else if(name == "print") { printf((args.front()+"\n").c_str()); return; } + else if (name == "sleep") { this_thread::sleep_for(chrono::milliseconds(stoi(args.front()))); return; } + } + catch(exception e) + { + log("Error while calling Function \""+name+"\": "+e.what(), LogStatus::Error); + } +} \ No newline at end of file diff --git a/rootfs/usr/share/d3m0n/src/application/source/source.cpp b/rootfs/usr/share/d3m0n/src/application/source/source.cpp new file mode 100644 index 00000000..7dcdb901 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/application/source/source.cpp @@ -0,0 +1,121 @@ +#include "sourceHandler.h" + + +namespace fs = filesystem; +using namespace std; + +void WriteSource(string path, string data) { + ofstream outputFile(path); + + if (!outputFile.is_open()) { + log("Error opening Event def sourceFile for writing!", LogStatus::Error); + return; + } + outputFile << data.c_str() << endl; + outputFile.close(); +} + +void loadEvent(Application* app, string eventName, string eventCode) +{ + log("Saving Event: \""+eventName+"\"", LogStatus::Loading); + system(("mkdir '"+app->temp_path+"/events/'").c_str()); + WriteSource(app->temp_path+"/events/"+eventName, eventCode); +} +void execute(Application* app, string line) +{ + string app_path = app->temp_path; + // printf((line+"\n").c_str()); + + if(line[0] == '#') + {} + else if(startsWith(line, "def ")) + { + // string def_name = line.Replace("def ", "").TrimEnd('}').Split("{")[0]; + // string def_script = line.Replace("def ", "").TrimEnd('}').Split("{")[1].Replace(" ", "\r\n"); + // if(!Directory.Exists(app_path+"/defs")) + // { + // Directory.CreateDirectory(app_path+"/defs"); + // } + // File.WriteAllText(app_path+"/defs/"+def_name, def_script); + // logn("[o] created def "+def_name, ConsoleColor::Green); + printf("TODO: def script\n"); + } + else if(startsWith(line, "use")) + { + printf("TODO: use > script\n"); + string path="TODO"; + // string path = line.Split(">")[1]; + log("using "+path, LogStatus::Info); + // script.importLib(getString(path).Replace(";", "")); + } + else if(contains(line, "=")) + { + string name = delete_space(Split(line, '=')); + string value = Split(line, '=', false); + log("Def new var '"+name+"' => '"+value+"'", LogStatus::Warning); + // script.setVariable(name, value); + } + else if(contains(line, "(") && endsWith(line, ")")) + { + string name = Split(line, '('); + string value2 = Split(line, '(', false); + replaceAll(value2, ")", ""); + + std::list value; + // get two first args + value.push_back(Split(value2, ',')); + value.push_back(Split(value2, ',', false)); + + script::callFunction(name, value); + // printf("Calling function %s with args %s\n", name.c_str(), value.front().c_str()); + } + +} +void callEvent(Application* app, string eventName) +{ + string eventPath = app->temp_path+"/events/"+eventName; + if(!filesystem::exists(eventPath)) + { + log("Event '"+eventName+"' does not exists in app '"+app->name+"'", LogStatus::Error); + return; + } + ifstream inputFile(eventPath); + + if (!inputFile.is_open()) { + log("Error opening Event def sourceFile for reading!", LogStatus::Error); + return; + } + + string line; + while (getline(inputFile, line)) { + istringstream iss(line); + string token; + + // extract attributes from the attribute string + while (getline(iss, token, ';')) { + deleteLeadingSpaces(token); + execute(app, token); + } + } + + inputFile.close(); +} +string getString(string raw) +{ + // string app_path = Interpreter.currentRunningAppPath; + // string ressources = app_path+"/ressources"; + // string source = app_path+"/src"; + // string layouts = app_path+"/layouts"; + // string to_return=raw.TrimStart(' ').TrimStart('"').TrimEnd('"').Replace("$d3m0n", utils.getPath()).Replace("$source", source).Replace("$layouts", layouts).Replace("$ressources", ressources); + // // utils.logn(to_return, ConsoleColor.Magenta); + // foreach(string word in to_return.Split(" ")) + // { + // if(word.StartsWith('$') && varExists(word.TrimStart('$'))) + // { + // // MessageBox.Show(word); + // to_return=to_return.Replace(word, getVariable(word.TrimStart('$'))); + // } + // } + return ""; + // return to_return; +} \ No newline at end of file diff --git a/rootfs/usr/share/d3m0n/src/application/source/sourceHandler.cpp b/rootfs/usr/share/d3m0n/src/application/source/sourceHandler.cpp new file mode 100644 index 00000000..c23614c1 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/application/source/sourceHandler.cpp @@ -0,0 +1,69 @@ +#include "sourceHandler.h" + +namespace sourceHandler { + void parseSource(const string& path) + { + fstream file(path, ios::in | ios::out); // Open file in read-write mode + if (!file.is_open()) { + log("Failed to parse (error while opening file)", LogStatus::Error); + return; + } + stringstream buffer; + buffer << file.rdbuf(); + string fileContent = buffer.str(); + + // parse into one-liners + replaceAll(fileContent, "; ", ";"); + replaceAll(fileContent, "; ", ";"); + replaceAll(fileContent, "; ", ";"); + replaceAll(fileContent, "; ", ";"); + replaceAll(fileContent, "; ", ";"); + replaceAll(fileContent, ";\r\n", ";"); + replaceAll(fileContent, "=>\r\n", "=>"); + file.close(); + // write out + system(((string)"rm -rf '"+path+(string)"' && cat /dev/null > '"+path+"'").c_str()); + fstream file2(path, ios::in | ios::out); // Open file in read-write mode + if (!file2.is_open()) { + log("Failed to parse (error while opening file)", LogStatus::Error); + return; + } + file2 << fileContent << endl; + file2.close(); + + // logn(fileContent, ConsoleColor::Green); + log((string)"Parsed '"+path+(string)"'", LogStatus::Success); + } + void runSource(Application* app, const string& path) + { + // parse source file + parseSource(path); + ifstream file(path); + if (!file.is_open()) { + log("Failed to open the source file.", LogStatus::Error); + return; + } + string line; + int line_number = 0; + while (getline(file, line)) { + line_number++; + if(line[0] == '#') continue; // Skip comments + if(line.empty() || line[0] == '\n' || line[0] == '\r') continue; // Empty lines are skipped as well + + string delimiter = "=>"; + size_t pos = line.find(delimiter); + + if (pos != string::npos) { // If delimiter found + // Extract substrings + string eventName = line.substr(0, pos); + string eventCode = line.substr(pos + delimiter.length()); + + // loads event + loadEvent(app, delete_space(eventName), eventCode); + } else { + log("Error in sourceFile '"+path+"', \nCaused by '"+line+"' at l."+to_string(line_number), LogStatus::Error); + } + } + file.close(); // Close the file + } +}; diff --git a/rootfs/usr/share/d3m0n/src/application/source/sourceHandler.h b/rootfs/usr/share/d3m0n/src/application/source/sourceHandler.h new file mode 100644 index 00000000..543b0b71 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/application/source/sourceHandler.h @@ -0,0 +1,46 @@ +#ifndef SOURCEHANDLER_H +#define SOURCEHANDLER_H + + +#include "../../settings.h" +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace fs = std::filesystem; +using namespace std; + +// Forward declaration of Application class if it is not defined in settings.h or utils.h +class Application; + +namespace sourceHandler { + extern void parseSource(const string& path); + + extern void runSource(Application* app, const string& path); +}; + +void WriteSource(string path, string data); +void loadEvent(Application* app, string eventName, string eventCode); +void execute(Application* app, string line); +void callEvent(Application* app, string eventName); + +namespace script +{ + extern void callFunction(string name, list args); +}; + +#endif // SOURCEHANDLER_H diff --git a/rootfs/usr/share/d3m0n/src/ascii.txt b/rootfs/usr/share/d3m0n/src/ascii.txt new file mode 100644 index 00000000..e77731a6 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/ascii.txt @@ -0,0 +1,27 @@ +╔═╗ ║ ╚═╝ ╩ ╦ ╠═╣ ╬ + + + + ║ ╔═╗ ╔═╦═╗ ╔═╗ ╔═╗ + ╔═╣ ═╣ ║ ║ ║ ║ ║ ║ ║ + ╚═╝ ╚═╝ ╩ ╩ ╩ ╚═╝ ╩ ╩ + ══════════╦═══════════════╦══════════ + ╔════════════════╩═══════════════╩═════════════════╗ +╔══════════════╝ Help command ╚═══════════════╗ +║ command ║ permissions ║ description ║ +╠════════════════════════════════╬═════════════╬══════════════════════════════════╣ +║ help ║ none ║ display this list ║ +║ exit ║ none ║ quit ║ +║ config [get/set] name (value) ║ admin ║ config your phone ║ +║ load ║ none ║ loads new app ║ +║ list ║ none ║ list currently loaded apps ║ +║ run ║ none ║ run app by package name ║ +║ update [all/package_installer] ║ none ║ update d3m0n OS components ║ +║ fetch ║ none ║ download package from repository ║ +║ clear ║ none ║ clear console ║ +║ clean ║ none ║ clean scripts & applications ║ +║ version ║ none ║ get current version ║ +║ display [clear/draw] ║ none ║ manual display debug commands ║ +║ info ║ none ║ get debug informations ║ +║ shutdown ║ none ║ stop d3m0n shell ║ +╚════════════════════════════════╩═════════════╩══════════════════════════════════╝ \ No newline at end of file diff --git a/rootfs/usr/share/d3m0n/src/build.bat b/rootfs/usr/share/d3m0n/src/build.bat new file mode 100644 index 00000000..b4066b82 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/build.bat @@ -0,0 +1,19 @@ +@echo off + +set path=%path%;C:\Users\celcm\MinGW\lib\gcc\x86_64-w64-mingw32\13.2.0 + +set homepath=%cd% + +cd C:\Users\celcm\MinGW\bin\ + +call gcc "%homepath%\*.c" -o d3m0n.exe + +pause + +mv d3m0n.exe "%homepath%\d3m0n.exe" + +cd "%homepath%" + +call d3m0n.exe + +pause \ No newline at end of file diff --git a/rootfs/usr/share/d3m0n/src/build.sh b/rootfs/usr/share/d3m0n/src/build.sh new file mode 100644 index 00000000..c63b178f --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/build.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +# solved bcm2835.h error by addind static_cast( void* ) + +clear + +cd ./test +./build.sh +cd .. + + +# setting lib var +# LD_LIBRARY_PATH=$(pwd)/lib + +make clean +make -j 4 + +#gcc *.cpp *.c -Ilibs/ili9340/ -Wall -std=c99 -o d3m0n | grep "error" + +sudo chmod 777 ./d3m0n + +sudo ./d3m0n diff --git a/rootfs/usr/share/d3m0n/src/d3m0n b/rootfs/usr/share/d3m0n/src/d3m0n new file mode 100644 index 0000000000000000000000000000000000000000..1269289b9128015077128e0bfcb0e4d5e8249f0d GIT binary patch literal 520920 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 literal 0 HcmV?d00001 diff --git a/rootfs/usr/share/d3m0n/src/d3m0n.cpp b/rootfs/usr/share/d3m0n/src/d3m0n.cpp new file mode 100644 index 00000000..fc788469 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/d3m0n.cpp @@ -0,0 +1,326 @@ +#include +#include "settings.h" +#include +#include "application/appManager.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define COMMAND_HELP "d3m0n shell - help\n| command | permissions | description |\n|--------------------------------|-------------|----------------------------------|\n| help | none | display this list |\n| exit | none | quit |\n| config [get/set] name (value) | admin | config your phone |\n| load | none | loads new app |\n| list | none | list currently loaded apps |\n| run | none | run app by package name |\n| update [all/package_installer] | none | update d3m0n OS components |\n| fetch | none | download package from repository |\n| clear | none | clear console |\n| clean | none | clean scripts & applications |\n| version | none | get current version |\n| display [clear/draw] | none | manual display debug commands |\n| info | none | get debug informations |\n| shutdown | none | stop d3m0n shell |" +#define VERSION (string)"1.5 beta" + +void ShellHandle() { + // Create socket + int serverSocket = socket(AF_INET, SOCK_STREAM, 0); + if (serverSocket == -1) { + log("Error creating d3m0n shell server", LogStatus::Error); + return; + } + // Fill in the sockaddr_in structure + struct sockaddr_in serverAddr; + serverAddr.sin_family = AF_INET; + serverAddr.sin_addr.s_addr = INADDR_ANY; + // default port + int port = 3849; + try { + port = stoi(getSetting("shell_port", GetConfig())); + } + catch(exception e) {} + // close service running + log("Stopping services running on port "+to_string(port), LogStatus::Info); + system(("sudo fuser -k "+to_string(port)+"/tcp").c_str()); + + serverAddr.sin_port = htons(port); // Port to listen on + + // Bind socket + if (bind(serverSocket, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) == -1) { + log("Error binding d3m0n shell server", LogStatus::Error); + close(serverSocket); + return; + } + + // Listen for incoming connections + if (listen(serverSocket, 5) == -1) { + log("Error listening for d3m0n shell connections", LogStatus::Error); + close(serverSocket); + return; + } + + // get server IP + char srvIP[INET_ADDRSTRLEN]; + inet_ntop(AF_INET, &(serverAddr.sin_addr), srvIP, INET_ADDRSTRLEN); + + log("Listening on "+(string)srvIP+":"+to_string(port), LogStatus::Error); + + bool serverRunning=true; + + while (serverRunning) { + int clientSocket = accept(serverSocket, NULL, NULL); + if (clientSocket == -1) { + log("Can't accept connection", LogStatus::Error); + continue; + } + + // move cursor one line up: \033[F + // move cursor char 5: \033[5G + // color \033[38;5;$(echo $iter)m + + char buffer[1024]; + int bytesReceived; + + // Send welcome&login message to client + string welcomeMessage = "\xE2\x98\xA0 Welcome to the server\n"+log("d3m0n shell loaded, type 'help' to display main commands\n\n", LogStatus::Info)+ + bashGradient(196, " USERNAME \n")+ + bashGradient(196, "╔════════════════╗\n")+ + bashGradient(196, "╚> "); + + send(clientSocket, welcomeMessage.data(), welcomeMessage.size(), 0); + + // recieve username + bytesReceived = recv(clientSocket, buffer, sizeof(buffer), 0); + buffer[bytesReceived] = '\0'; + string username=removeUnwantedChars((string)buffer); + username=Trim(username); + + printf("requesting password...\n"); + // recieve password + welcomeMessage = bashGradient(196, "\n PASSWORD \n")+ + bashGradient(196, "╔════════════════╗\n")+ + bashGradient(196, "╚> "); + send(clientSocket, welcomeMessage.data(), welcomeMessage.size(), 0); + bytesReceived = recv(clientSocket, buffer, sizeof(buffer), 0); + buffer[bytesReceived] = '\0'; + string password=removeUnwantedChars((string)buffer); + password=Trim(password); + log("new login => '"+username+":"+password+"'", LogStatus::Info); + + if((string)getSetting(username.data(), (GetPath()+"/configs/users").data()) == password) + { + send(clientSocket, "Connected successfully!\n\e[1;32m[d3m0n shell]>\e[0m ", strlen("Connected successfully!\n\e[1;32m[d3m0n shell]>\e[0m "), 0); + } + else { + send(clientSocket, "Invalid username or password\n", strlen("Invalid username or password\n"), 0); + close(clientSocket); + } + + + + bool running=true; + char command[64]; + string downloader_path = GetPath()+"/d3m0n_package_installer.sh"; + + // send(clientSocket, "\e[1;32m[d3m0n shell]>\e[0m ", strlen("\e[1;32m[d3m0n shell]>\e[0m "), 0); + + string output; + while (running && (bytesReceived = recv(clientSocket, buffer, sizeof(buffer), 0)) > 0) { + // end carriage + buffer[bytesReceived] = '\0'; + + string temp = Trim((string)buffer).data(); + temp.copy(command, std::min(temp.size(), sizeof(command) - 1)); // Ensure null termination + command[std::min(temp.size(), sizeof(command) - 1)] = '\0'; // Ensure null termination + + if(command != "") { + if(delete_space(command)=="exit") running=false; + else if(delete_space(command)=="shutdown") { send(clientSocket, "Session closed\n", strlen("Session closed\n"), 0); running=false; serverRunning=false;} + else if(startsWith(command, "display")) { + output += display::displayCommand(command); + } + else if(delete_space(command)=="info") { output = printInfos(); } + else if(delete_space(command)=="version") output = log("Current version: "+VERSION, LogStatus::Info); + else if(delete_space(command)=="clear") output = exec("clear"); + else if(delete_space(command)=="help") output = logn(COMMAND_HELP, ConsoleColor::DarkGreen); + else if(delete_space(command)=="list") output = appManager::GetAppList(); + else if(command == "clean") { + string remove_files = "rm -rf '"+downloader_path+"' && rm -rf '"+GetPath()+"/temp/*'"; + output = log("Cleaning scripts & loaded applications...", LogStatus::Loading); + appManager::appsPackages = {}; + appManager::appsPaths = {}; + output += exec(remove_files.c_str()); + output += log("Done!", LogStatus::Success); + } + else if(startsWith(command, "update")) { + string arg1 = Split(command, ' ', false); + if(arg1 == "package_installer") { + output = log("Updating d3m0n package installer...", LogStatus::Loading); + int status = system(("rm -rf '"+downloader_path+"' && curl -o '"+downloader_path+"' 'https://raw.githubusercontent.com/d3m0n-project/d3m0n_os/main/rootfs/usr/share/applications/d3m0n_package_installer.sh' && chmod 777 '"+downloader_path+"'").c_str()); + if(status != 0) { output += log("Update failed!", LogStatus::Error); } + } else if(arg1 == "display") { + system("clear"); + output = log("Errasing display...", LogStatus::Loading); + display::Clear(); + output += log("Reloading display...", LogStatus::Loading); + output += appManager::mainScreenInit(); + output += log("Successfully realoded mainscreen", LogStatus::Success); + } else { + output = log("Usage 'update [all/package_installer/display]", LogStatus::Error); + } + } else if (startsWith(command, "load")) { + string path = Split(command, ' ', false); + appManager::loadApp(path.data()); + output = log("Loading '"+path+"'...", LogStatus::Loading); + } else if (startsWith(command, "run")) { + string package = Split(command, ' ', false); + Application newApp; + newApp.temp_path = appManager::GetAppPathByPackage(package.data()); + appManager::runApp(&newApp); + output = log("Running app...", LogStatus::Loading); + } else if (startsWith(command, "fetch")) { + + string package_or_name = Split(command, ' ', false); + output = logn(" Downloading ==> "+package_or_name, ConsoleColor::Blue); + + // downloads installer if missing + if(!filesystem::exists(downloader_path)) + { + output += log("Downloading package installer script...", LogStatus::Loading); + output += exec(("curl -o '"+downloader_path+"' 'https://raw.githubusercontent.com/d3m0n-project/d3m0n_os/main/rootfs/usr/share/applications/d3m0n_package_installer.sh'").c_str()); + } + + int status = system(("chmod 777 '"+downloader_path+"' && '"+downloader_path+"' '"+package_or_name+"'").c_str()); + // display run command + output += logn("Run this app by loading it using '\e[1;33mload "+GetPath()+"/../applications/"+package_or_name+"\e[38;5;208m' \nand then run it using '\e[1;33mrun "+package_or_name+"\e[38;5;208m'", ConsoleColor::Orange); + // handle errors + if(status != 0) + { + output += log("Failed to fetch remote repository: are you offline?", LogStatus::Error); + } + } + else { output = log("Invalid command '"+(string)command+"' (help for list of available commands)", LogStatus::Error); } + } + output+="\n\e[1;32m[d3m0n shell]>\e[0m "; + if(output!="") { + send(clientSocket, output.c_str(), strlen(output.c_str()), 0); + } + } + + // Close client socket + close(clientSocket); + } + + close(serverSocket); +} + +int main(int argc, char *argv[]) +{ + // init path + string d3m0n_path = GetPath(); + + // create configs folder + system(("sudo mkdir '"+d3m0n_path+"/configs'").c_str()); + + // if no users, create one "d3m0n:d3m0n" + if(!filesystem::exists(d3m0n_path+"/configs/users")) { + // create user + // format: username: password + // default: d3m0n: d3m0n + string users_command = "echo 'd3m0n: d3m0n' > '"+d3m0n_path+"/configs/users'"; + system(users_command.c_str()); + + } + + system("clear"); + string command = (string)"rm -rf '"+d3m0n_path+(string)"/temp/' && mkdir '"+d3m0n_path+(string)"/temp/'"; + system(command.c_str()); + + // init display + // display* display1 = new display(); + + + + // loads apps launcher + // load topbar + // load background + + + // init banner + logn(" ██████╗ ██████╗ ███╗ ███╗ ██████╗ ███╗ ██╗", ConsoleColor::Reset); + logn(" ██╔══██╗╚════██╗████╗ ████║██╔═████╗████╗ ██║", ConsoleColor::Reset); + logn(" ██║ ██║ █████╔╝██╔████╔██║██║██╔██║██╔██╗ ██║", ConsoleColor::Reset); + logn(" ██║ ██║ ╚═══██╗██║╚██╔╝██║████╔╝██║██║╚██╗██║", ConsoleColor::Reset); + logn(" ██████╔╝██████╔╝██║ ╚═╝ ██║╚██████╔╝██║ ╚████║", ConsoleColor::Reset); + logn(" ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝", ConsoleColor::Reset); + logn(" made by 4re5 group ", ConsoleColor::Reset); + logn(" the first hacking cellular phone ", ConsoleColor::Reset); + printf("\n"); + + + + if(isDebugMode()) { + string input; + log("DEBUG mode is enabled wan't to continue? [y/N] ", LogStatus::Critical); + cin >> input; + if(input == "n" || input == "N") + { + return 0; + } + } + + sleep(1); + display::init(SCREEN_WIDTH, SCREEN_HEIGHT); + // setup display + // std::thread displayThread(&display::init, display1, SCREEN_WIDTH, SCREEN_HEIGHT); + // std::thread wmThread(display1.init(SCREEN_WIDTH, SCREEN_HEIGHT)); + // displayThread.join(); + thread displayThread(display::getClick); + + sleep(1); + + display::drawImage(DataTypes::Point(0, 0), GetPath()+"/splash/splash.png", SCREEN_WIDTH, SCREEN_HEIGHT, false); + display::PlaySound("boot"); + log("Splash loaded... Waiting "+(string)getSetting("splash_time", GetConfig())+"ms", LogStatus::Loading); + // setting up splash image + sleep(stoi(getSetting("splash_time", GetConfig()))/1000); + + // hide splashscreen + display::Clear(); + + // color 245, 124, 0 don't displays as dark orange but yellow/green + //display1->drawImage(DataTypes::Point(100, 100), "/home/kali/2d-game/player/back/walking-0.png", 100, 100, false); + // display1->drawImage(DataTypes::Point(0, 0), "/home/kali/d3m0n_os_debian/rootfs/usr/share/d3m0n/themes/default_dark/icons/contacts.png", 100, 100, false); + + // display1->drawRect(0, 0, 100, 100, RGBtoRGB565(245, 124, 0), true); + // display1->drawCircle(50, 50, 50, Colors::Black, true); + + // load apps in memory + // appManager* manager = new appManager(); + // displayManager::setDisplay(display1); + // manager->setDisplay(display1->getDisplay()); + appManager::mainScreenInit(); + + + // display1->drawLine(100, 100, 100, 200, Colors::Red); + // display1->drawRect(10, 10, 100, 100, Colors::Green, false); + + // Application gallery = manager.loadApp("./test/test.d3m0n"); + // manager.runApp(&gallery); + + // callEvent(&gallery, "Window.OnCreate"); + + // gallery.mainWindow->Update(); + // log("Updated!", LogStatus::Success); + + ShellHandle(); + + + // logn("Name: "+gallery.mainWindow->Controls.at(0)->name, ConsoleColor::Cyan); + // logn("Width: "+to_string(gallery.mainWindow->Controls.at(0)->Width), ConsoleColor::Cyan); + // logn("Hight: "+to_string(gallery.mainWindow->Controls.at(0)->Height), ConsoleColor::Cyan); + // logn("Location.X: "+to_string(gallery.mainWindow->Controls.at(0)->Location.X), ConsoleColor::Cyan); + // logn("Location.Y: "+to_string(gallery.mainWindow->Controls.at(0)->Location.Y), ConsoleColor::Cyan); + // logn("BG_Color: "+to_string(gallery.mainWindow->Controls.at(0)->BackColor), ConsoleColor::Cyan); + + // load apps in grid + + + printf("\n"); + + return 0; +} \ No newline at end of file diff --git a/rootfs/usr/share/d3m0n/src/d3m0n_package_installer.sh b/rootfs/usr/share/d3m0n/src/d3m0n_package_installer.sh new file mode 100644 index 00000000..c9282cad --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/d3m0n_package_installer.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +# d3m0n app remote installer +# usage 'fetch ' inside d3m0n shell + +PACKAGE=$1 +GET_PATH="/home/kali/d3m0n_os_debian/rootfs/usr/share/d3m0n" + +COLOR1="\e[1;35m" +COLOR2="\e[0;35m" + +process_file() { + local json="$1" + local name=$(echo "$json" | jq -r ".name") + local download_url=$(echo "$json" | jq -r ".download_url") + + if [[ "$name" == "$PACKAGE" ]]; then + mkdir -p "$GET_PATH/../applications" + sudo chmod 777 "$GET_PATH/../applications" + curl "$download_url" -o "$GET_PATH/../applications/$name" + clear + echo -e "$COLOR2 Found $COLOR1$PACKAGE$COLOR2 inside d3m0n repository" + echo -e "$COLOR2 Url: $COLOR1$download_url" + echo -e "$COLOR2 " + echo -e "\n\nDownloaded $name successfully!" + fi +} + +process_directory() { + local path="$1" + local entries=$(curl "https://api.github.com/repos/d3m0n-project/d3m0n_os/contents/$path" | jq -c '.[]') + + # Iterate over each entry + while IFS= read -r entry; do + local type=$(echo "$entry" | jq -r '.type') + local name=$(echo "$entry" | jq -r '.name') + + if [[ "$type" == "file" ]]; then + process_file "$entry" + elif [[ "$type" == "dir" ]]; then + process_directory "$path/$name" + fi + done <<< "$entries" +} + +# Start processing from the root directory +process_directory "rootfs/usr/share/applications" diff --git a/rootfs/usr/share/d3m0n/src/lib/README.md b/rootfs/usr/share/d3m0n/src/lib/README.md new file mode 100644 index 00000000..d6199666 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/lib/README.md @@ -0,0 +1,355 @@ +# Raspberry-ili9340spi +ILI9340 SPI TFT Library for Raspberry Pi. +This may works with other boards like OrangePi/NanoPi. + +You can show a chart to ILI9340/ILI9341/ILI9163C/ST7735 SPI TFT. +You can choose bmc2835 library/WiringPi library. + +I tested these TFT. +1.44 inch 128x128 ST7735 +1.44 inch 128x128 ILI9163C +1.8 inch 128x160 ST7735 +2.2 inch 240x320 ILI9340 +2.4 inch 240x320 ILI9341 +2.4 inch 240x320 ILI9341 + +This project can be built with either: +- Build using bcm2835 library +- Build using Hardware SPI of the WiringPi library +- Build using Software SPI of the WiringPi library + +--- + +# Wirering + +|TFT||GPIO Header|| +|:-:|:-:|:-:|:-:| +|VCC|--|3.3V|*4| +|GND|--|GND|| +|CS|--|Pin#24(SPI CS0)|*2 *3| +|RES|--|Pin#12|*1| +|D/C|--|Pin#11|*1| +|MOSI|--|Pin#19(SPI MOSI)|*3| +|SCK|--|Pin#23(SPI SCLK)|*3| +|LED|--|3.3V|*4| +|MISO|--|N/C|| + +(*1) You can change it to any pin by changing source. + +(*2) You can use CS1 by specifying compilation flags. + +(*3) For Software SPI, you can change it to any pin by changing source. + +(*4) SPI TFTs require a lot of current. +If it is supplied from the Raspberry Pi's 3.3V pin, it may run out of current. +Use the 5V pin and the regulator to power it and it will be stable. +I used AMS1117. + +--- + +# Build using bcm2835 library +RPi Only, Very fast + +### Install bcm2835 library + +``` +wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.56.tar.gz +tar zxvf bcm2835-1.56.tar.gz +cd bcm2835-1.56 +./configure +make +sudo make check +sudo make install +``` + +__\* This tool require 1.56 or later.__ +__\* Because this tool uses bcm2835_spi_write.__ + +### Using other GPIO +You can change GPIO to any pin by changing here. +``` +#ifdef BCM +#include +#define D_C 17 // BCM IO17=Pin#11 +#define RES 18 // BCM IO18=Pin#12 +#endif +``` + +### Using SPI0 +Use Pin#24 as ChipSelect. +``` +cd $HOME +git clone https://github.com/nopnop2002/Raspberry-ili9340spi +cd Raspberry-ili9340spi +make lib +cc -o demo demo.c fontx.c ili9340.c jpeg.a png.a -lbcm2835 -lm -DBCM +sudo ./demo +``` + +### Using SPI1 +Use Pin#26 as ChipSelect. +``` +cd $HOME +git clone https://github.com/nopnop2002/Raspberry-ili9340spi +cd Raspberry-ili9340spi +make lib +cc -o demo demo.c fontx.c ili9340.c jpeg.a png.a -lbcm2835 -lm -DBCM -DSPI1 +sudo ./demo +``` + +### SPI bus speed for bcm2835 +By default it uses 7.8125MHz on Rpi2, 12.5MHz on RPI3. +Can be changed at compile time. +- -DSPI_SPEED16 : 15.625MHz on Rpi2, 25MHz on RPI3. +- -DSPI_SPEED32 : 31.25MHz on Rpi2, 50MHz on RPI3. + +___50MHz is an overclock.___ + +### SPI Bus speed comparison +||7.8125MHz|15.625MHz|31.25MHz| +|:-:|:-:|:-:|:-:| +|ColorBarTest|245|160|107| +|ArrowTest|286|193|155| +|LineTest|595|397|294| +|CircleTest|558|373|282| +|RoundRectTest|560|371|273| +|DirectionTest|304|199|153| +|HorizontalTest|430|283|209| +|VerticalTest|438|290|214| +|FillRectTest|448|285|221| +|ColorTest|500|327|234| +|JPEGTest|1607|1076|816| +|PNGTest|1742|1231|974| + +--- + +# Build using Hardware SPI of the WiringPi library +WiringPi library initializes GPIO in one of the following ways: +- int wiringPiSetup (void); +- int wiringPiSetupGpio (void); +- int wiringPiSetupPhys (void); +- int wiringPiSetupSys (void); + +This project by default uses the ```wiringPiSetup()``` function to initialize GPIOs. +Then use the wiringPiSPISetup() function to initialize the SPI. +If you use it on a board other than the RPI board, you may need to change the WiringPi number. +``` +#define D_C 0 // wPi IO00=Pin#11 +#define RES 1 // wPi IO01=Pin#12 +``` + +As far as I know, there are these WiringPi libraries. +- WiringPi for OrangePi +- WiringPi for BananaPi +- WiringPi for NanoPi +- WiringPi for Pine-64 + +If you want to initialize GPIO with ```wiringPiSetupGpio()```, Use the -DGPIO compilation flag. +In this case, use the following GPIOs. +``` +#define D_C 17 // BCM IO17=Pin#11 +#define RES 18 // BCM IO18=Pin#12 +``` + + + +### Using SPI0 +Use Pin#24 as ChipSelect. +``` +git clone https://github.com/nopnop2002/Raspberry-ili9340spi +cd Raspberry-ili9340spi +make lib +cc -o demo demo.c fontx.c ili9340.c jpeg.a png.a -lwiringPi -lm -pthread -DWPI +sudo ./demo +``` + +### Using SPI1 +Use Pin#26 as ChipSelect. +``` +git clone https://github.com/nopnop2002/Raspberry-ili9340spi +cd Raspberry-ili9340spi +make lib +cc -o demo demo.c fontx.c ili9340.c jpeg.a png.a -lwiringPi -lm -pthread -DWPI -DSPI1 +sudo ./demo +``` + +___Note for OrangePi___ +Opi have only 1 SPI. +OPi-PC has SPI0 on pin 24. +OPi-ZERO has SPI1 on pin 24. + +### SPI bus speed for WiringPi +By default it uses 8MHz on all Rpi. +Can be changed at compile time. +- -DSPI_SPEED16 : 16MHz on all Rpi. +- -DSPI_SPEED32 : 32MHz on all Rpi. + +### SPI Bus speed comparison +||8MHz|16MHz|32MHz| +|:-:|:-:|:-:|:-:| +|ColorBarTest|208|116|93| +|ArrowTest|389|296|239| +|LineTest|1800|1637|1560| +|CircleTest|1630|1481|1393| +|RoundRectTest|1633|1490|1412| +|DirectionTest|461|354|315| +|HorizontalTest|878|723|663| +|VerticalTest|909|769|702| +|FillRectTest|454|246|148| +|ColorTest|558|234|159| +|JPEGTest|6292|5862|5640| +|PNGTest|6439|5989|5803| + +--- + +# Build using Software SPI of the WiringPi library +WiringPi library initializes GPIO in one of the following ways: +- int wiringPiSetup (void); +- int wiringPiSetupGpio (void); +- int wiringPiSetupPhys (void); +- int wiringPiSetupSys (void); + +This project by default uses the ```wiringPiSetup()``` function to initialize GPIOs. +Then use the wiringPiSPISetup() function to initialize the SPI. +If you use it on a board other than the RPI board, you may need to change the WiringPi number. +``` +#define D_C 0 // wPi IO00=Pin#11 +#define RES 1 // wPi IO01=Pin#12 +#define MOSI 12 // wPi IO12=Pin#19 +#define SCLK 14 // wPi IO14=Pin#23 +#define CS 10 // wPi IO10=Pin#24 +``` + +If you want to initialize GPIO with ```wiringPiSetupGpio()```, Use the -DGPIO compilation flag. +In this case, use the following GPIOs. +``` +#define D_C 17 // BCM IO17=Pin#11 +#define RES 18 // BCM IO18=Pin#12 +#define MOSI 10 // BCM IO10=Pin#19 +#define SCLK 11 // BCM IO11=Pin#23 +#define CS 24 // BCM IO24=Pin#24 +``` +``` +git clone https://github.com/nopnop2002/Raspberry-ili9340spi +cd Raspberry-ili9340spi +make lib +cc -o demo demo.c fontx.c ili9340.c jpeg.a png.a -lwiringPi -lm -pthread -DWPI -DSOFT_SPI +sudo ./demo +``` + + +--- + +# TFT resolution and GRAM offset +TFT resolution is set to tft.conf. + +If your TFT doesn't use a memory from 0th address in GRAM, +It use GRAM offset which set to tft.conf. + +``` +#width=128 height=128 +width=240 height=320 +#width=240 height=400 + +#If TFT have GRAM offset +#offsetx=2 +#offsety=1 +``` + + +---- + +![ili9340-11](https://user-images.githubusercontent.com/6020549/58363270-668e0880-7edc-11e9-8f5a-ad00c60c5d4d.JPG) +![ili9340-12](https://user-images.githubusercontent.com/6020549/58363271-668e0880-7edc-11e9-80f9-4019c53c334d.JPG) +![ili9340-13](https://user-images.githubusercontent.com/6020549/58363272-668e0880-7edc-11e9-8ced-64367179c509.JPG) +![ili9340-14](https://user-images.githubusercontent.com/6020549/58363273-668e0880-7edc-11e9-84c1-779bd70a9ac4.JPG) +![ili9340-15](https://user-images.githubusercontent.com/6020549/58363274-67269f00-7edc-11e9-874e-b96165374809.JPG) +![ili9340-16](https://user-images.githubusercontent.com/6020549/58363275-67269f00-7edc-11e9-9664-2e7a2fe6d6bf.JPG) +![ili9340-17](https://user-images.githubusercontent.com/6020549/58363276-67269f00-7edc-11e9-9fc4-579a03e6bfd2.JPG) +![ili9340-18](https://user-images.githubusercontent.com/6020549/58363277-67269f00-7edc-11e9-9d77-2ebacc8666c5.JPG) +![ili9340-19](https://user-images.githubusercontent.com/6020549/58363278-67bf3580-7edc-11e9-9e95-c9daaa85c4b1.JPG) +![ili9340-20](https://user-images.githubusercontent.com/6020549/58363268-65f57200-7edc-11e9-8cc8-af25397d5e24.JPG) +![ili9340-21](https://user-images.githubusercontent.com/6020549/58363269-65f57200-7edc-11e9-89f9-8ad644e0b279.JPG) + +JPEG File +![ili9340-JPEG](https://user-images.githubusercontent.com/6020549/232970130-3241a691-48d6-4b48-b34f-ce7a2e42f6c3.JPG) +PNG File +![ili9340-PNG](https://user-images.githubusercontent.com/6020549/232970139-5b23c012-f678-45fb-bd76-fcb63f6a9c26.JPG) + +--- + +From left to right: +2.8" 240x320 ILI9341 +2.4" 240x320 ILI9341 +2.2" 240x320 ILI9340 + +![ILI9341-A](https://user-images.githubusercontent.com/6020549/232970787-2374f04f-def0-4498-b585-c287b9e31663.JPG) +![ILI9341-B](https://user-images.githubusercontent.com/6020549/232970793-dc0c753a-6da9-4ac9-bab8-c5ebd0752221.JPG) +![ILI9341-C](https://user-images.githubusercontent.com/6020549/232970799-f87800de-a6f4-435e-b9e9-a2a8a6da6b95.JPG) + +--- + +From left to right: +2.2" 240x320 ILI9340 +1.44" 128x128 ST7735 +1.44" 128x128 ILI9163C +1.8" 128x160 ST7735 + +![ili9163-1](https://user-images.githubusercontent.com/6020549/28749424-d9c5af2e-7501-11e7-9e3c-a88376ac015f.JPG) + +--- + +# XPT2046 Touch Screen +There is a TFT equipped with XPT2046. +![XPT2046-3](https://user-images.githubusercontent.com/6020549/144333924-5236bff3-3f4d-4be4-8e99-b6e31878e4f3.jpg) + +A library of XPT2046 Touch Screen is included in this library. +I ported from [here](https://github.com/xofc/xpt2uinput). + +There is a TFT equipped with HR2046. +XPT2046 and HR2046 are very similar. But HR2046 does not work properly. +![XPT2046-2](https://user-images.githubusercontent.com/6020549/144332571-717f33b1-df03-4a0a-9a23-c7c99b9d4d32.JPG) + +Wirering + +|TFT||Rpi|| +|:-:|:-:|:-:|:-:| +|VCC|--|3.3V|| +|GND|--|GND|| +|CS|--|Pin#24(SPI CS0)|| +|RES|--|Pin#12|(*1)| +|D/C|--|Pin#11|(*1)| +|MOSI|--|Pin#19(SPI MOSI)|(*2)| +|SCK|--|Pin#23(SPI SCLK)|(*2)| +|LED|--|3.3V|| +|MISO|--|N/C|| +|T_CLK|--|Pin#23(SPI SCLK)|(*2)| +|T_CS|--|Pin#26(SPI CE1)|| +|T_DIN|--|Pin#19(SPI MOSI)|(*2)| +|T_OUT|--|Pin#21(SPI MISO)|(*2)| +|T_IRQ|--|Pin#22|(*1)| + +(*1) You can change any pin. + +(*2) SPI is shared by TFT and XPT2046. + +--- + +``` +cc -o xpt xpt.c xpt2046.c -lbcm2835 +sudo ./xpt +``` + +If you touch screen, point will show. + +![Touch-11](https://user-images.githubusercontent.com/6020549/232971208-6904db4f-15a8-492b-8e66-89c34c85d8e0.jpg) + +--- +``` +cc -o touch touch.c fontx.c ili9340.c xpt2046.c -lbcm2835 -lm -DBCM +sudo ./touch +``` + +If you touch area, number will show. + +![Touch-12](https://user-images.githubusercontent.com/6020549/232971233-a03cd5e8-f7e9-4f30-957e-b69fa2474b4d.JPG) diff --git a/rootfs/usr/share/d3m0n/src/lib/bcm2835.c b/rootfs/usr/share/d3m0n/src/lib/bcm2835.c new file mode 100644 index 00000000..adf126a8 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/lib/bcm2835.c @@ -0,0 +1,1791 @@ +/* bcm2835.c +// C and C++ support for Broadcom BCM 2835 as used in Raspberry Pi +// http://elinux.org/RPi_Low-level_peripherals +// http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf +// +// Author: Mike McCauley +// Copyright (C) 2011-2013 Mike McCauley +// $Id: bcm2835.c,v 1.25 2018/01/16 21:55:07 mikem Exp mikem $ +*/ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define BCK2835_LIBRARY_BUILD +#include "bcm2835.h" + +/* This define enables a little test program (by default a blinking output on pin RPI_GPIO_PIN_11) +// You can do some safe, non-destructive testing on any platform with: +// gcc bcm2835.c -D BCM2835_TEST +// ./a.out +*/ +/*#define BCM2835_TEST*/ + +/* Uncommenting this define compiles alternative I2C code for the version 1 RPi +// The P1 header I2C pins are connected to SDA0 and SCL0 on V1. +// By default I2C code is generated for the V2 RPi which has SDA1 and SCL1 connected. +*/ +/* #define I2C_V1*/ + +/* Physical address and size of the peripherals block +// May be overridden on RPi2 +*/ +uint32_t *bcm2835_peripherals_base = (uint32_t *)BCM2835_PERI_BASE; +uint32_t bcm2835_peripherals_size = BCM2835_PERI_SIZE; + +/* Virtual memory address of the mapped peripherals block + */ +uint32_t *bcm2835_peripherals = (uint32_t *)MAP_FAILED; + +/* And the register bases within the peripherals block + */ +volatile uint32_t *bcm2835_gpio = (uint32_t *)MAP_FAILED; +volatile uint32_t *bcm2835_pwm = (uint32_t *)MAP_FAILED; +volatile uint32_t *bcm2835_clk = (uint32_t *)MAP_FAILED; +volatile uint32_t *bcm2835_pads = (uint32_t *)MAP_FAILED; +volatile uint32_t *bcm2835_spi0 = (uint32_t *)MAP_FAILED; +volatile uint32_t *bcm2835_bsc0 = (uint32_t *)MAP_FAILED; +volatile uint32_t *bcm2835_bsc1 = (uint32_t *)MAP_FAILED; +volatile uint32_t *bcm2835_st = (uint32_t *)MAP_FAILED; +volatile uint32_t *bcm2835_aux = (uint32_t *)MAP_FAILED; +volatile uint32_t *bcm2835_spi1 = (uint32_t *)MAP_FAILED; + + +/* This variable allows us to test on hardware other than RPi. +// It prevents access to the kernel memory, and does not do any peripheral access +// Instead it prints out what it _would_ do if debug were 0 +*/ +static uint8_t debug = 0; + +/* I2C The time needed to transmit one byte. In microseconds. + */ +static int i2c_byte_wait_us = 0; + +/* +// Low level register access functions +*/ + +/* Function to return the pointers to the hardware register bases */ +uint32_t* bcm2835_regbase(uint8_t regbase) +{ + switch (regbase) + { + case BCM2835_REGBASE_ST: + return (uint32_t *)bcm2835_st; + case BCM2835_REGBASE_GPIO: + return (uint32_t *)bcm2835_gpio; + case BCM2835_REGBASE_PWM: + return (uint32_t *)bcm2835_pwm; + case BCM2835_REGBASE_CLK: + return (uint32_t *)bcm2835_clk; + case BCM2835_REGBASE_PADS: + return (uint32_t *)bcm2835_pads; + case BCM2835_REGBASE_SPI0: + return (uint32_t *)bcm2835_spi0; + case BCM2835_REGBASE_BSC0: + return (uint32_t *)bcm2835_bsc0; + case BCM2835_REGBASE_BSC1: + return (uint32_t *)bcm2835_st; + case BCM2835_REGBASE_AUX: + return (uint32_t *)bcm2835_aux; + case BCM2835_REGBASE_SPI1: + return (uint32_t *)bcm2835_spi1; + + } + return (uint32_t *)MAP_FAILED; +} + +void bcm2835_set_debug(uint8_t d) +{ + debug = d; +} + +unsigned int bcm2835_version(void) +{ + return BCM2835_VERSION; +} + +/* Read with memory barriers from peripheral + * + */ +uint32_t bcm2835_peri_read(volatile uint32_t* paddr) +{ + uint32_t ret; + if (debug) + { + printf("bcm2835_peri_read paddr %p\n", (void *) paddr); + return 0; + } + else + { + __sync_synchronize(); + ret = *paddr; + __sync_synchronize(); + return ret; + } +} + +/* read from peripheral without the read barrier + * This can only be used if more reads to THE SAME peripheral + * will follow. The sequence must terminate with memory barrier + * before any read or write to another peripheral can occur. + * The MB can be explicit, or one of the barrier read/write calls. + */ +uint32_t bcm2835_peri_read_nb(volatile uint32_t* paddr) +{ + if (debug) + { + printf("bcm2835_peri_read_nb paddr %p\n", paddr); + return 0; + } + else + { + return *paddr; + } +} + +/* Write with memory barriers to peripheral + */ + +void bcm2835_peri_write(volatile uint32_t* paddr, uint32_t value) +{ + if (debug) + { + printf("bcm2835_peri_write paddr %p, value %08X\n", paddr, value); + } + else + { + __sync_synchronize(); + *paddr = value; + __sync_synchronize(); + } +} + +/* write to peripheral without the write barrier */ +void bcm2835_peri_write_nb(volatile uint32_t* paddr, uint32_t value) +{ + if (debug) + { + printf("bcm2835_peri_write_nb paddr %p, value %08X\n", + paddr, value); + } + else + { + *paddr = value; + } +} + +/* Set/clear only the bits in value covered by the mask + * This is not atomic - can be interrupted. + */ +void bcm2835_peri_set_bits(volatile uint32_t* paddr, uint32_t value, uint32_t mask) +{ + uint32_t v = bcm2835_peri_read(paddr); + v = (v & ~mask) | (value & mask); + bcm2835_peri_write(paddr, v); +} + +/* +// Low level convenience functions +*/ + +/* Function select +// pin is a BCM2835 GPIO pin number NOT RPi pin number +// There are 6 control registers, each control the functions of a block +// of 10 pins. +// Each control register has 10 sets of 3 bits per GPIO pin: +// +// 000 = GPIO Pin X is an input +// 001 = GPIO Pin X is an output +// 100 = GPIO Pin X takes alternate function 0 +// 101 = GPIO Pin X takes alternate function 1 +// 110 = GPIO Pin X takes alternate function 2 +// 111 = GPIO Pin X takes alternate function 3 +// 011 = GPIO Pin X takes alternate function 4 +// 010 = GPIO Pin X takes alternate function 5 +// +// So the 3 bits for port X are: +// X / 10 + ((X % 10) * 3) +*/ +void bcm2835_gpio_fsel(uint8_t pin, uint8_t mode) +{ + /* Function selects are 10 pins per 32 bit word, 3 bits per pin */ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPFSEL0/4 + (pin/10); + uint8_t shift = (pin % 10) * 3; + uint32_t mask = BCM2835_GPIO_FSEL_MASK << shift; + uint32_t value = mode << shift; + bcm2835_peri_set_bits(paddr, value, mask); +} + +/* Set output pin */ +void bcm2835_gpio_set(uint8_t pin) +{ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPSET0/4 + pin/32; + uint8_t shift = pin % 32; + bcm2835_peri_write(paddr, 1 << shift); +} + +/* Clear output pin */ +void bcm2835_gpio_clr(uint8_t pin) +{ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPCLR0/4 + pin/32; + uint8_t shift = pin % 32; + bcm2835_peri_write(paddr, 1 << shift); +} + +/* Set all output pins in the mask */ +void bcm2835_gpio_set_multi(uint32_t mask) +{ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPSET0/4; + bcm2835_peri_write(paddr, mask); +} + +/* Clear all output pins in the mask */ +void bcm2835_gpio_clr_multi(uint32_t mask) +{ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPCLR0/4; + bcm2835_peri_write(paddr, mask); +} + +/* Read input pin */ +uint8_t bcm2835_gpio_lev(uint8_t pin) +{ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPLEV0/4 + pin/32; + uint8_t shift = pin % 32; + uint32_t value = bcm2835_peri_read(paddr); + return (value & (1 << shift)) ? HIGH : LOW; +} + +/* See if an event detection bit is set +// Sigh cant support interrupts yet +*/ +uint8_t bcm2835_gpio_eds(uint8_t pin) +{ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPEDS0/4 + pin/32; + uint8_t shift = pin % 32; + uint32_t value = bcm2835_peri_read(paddr); + return (value & (1 << shift)) ? HIGH : LOW; +} + +uint32_t bcm2835_gpio_eds_multi(uint32_t mask) +{ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPEDS0/4; + uint32_t value = bcm2835_peri_read(paddr); + return (value & mask); +} + +/* Write a 1 to clear the bit in EDS */ +void bcm2835_gpio_set_eds(uint8_t pin) +{ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPEDS0/4 + pin/32; + uint8_t shift = pin % 32; + uint32_t value = 1 << shift; + bcm2835_peri_write(paddr, value); +} + +void bcm2835_gpio_set_eds_multi(uint32_t mask) +{ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPEDS0/4; + bcm2835_peri_write(paddr, mask); +} + +/* Rising edge detect enable */ +void bcm2835_gpio_ren(uint8_t pin) +{ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPREN0/4 + pin/32; + uint8_t shift = pin % 32; + uint32_t value = 1 << shift; + bcm2835_peri_set_bits(paddr, value, value); +} +void bcm2835_gpio_clr_ren(uint8_t pin) +{ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPREN0/4 + pin/32; + uint8_t shift = pin % 32; + uint32_t value = 1 << shift; + bcm2835_peri_set_bits(paddr, 0, value); +} + +/* Falling edge detect enable */ +void bcm2835_gpio_fen(uint8_t pin) +{ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPFEN0/4 + pin/32; + uint8_t shift = pin % 32; + uint32_t value = 1 << shift; + bcm2835_peri_set_bits(paddr, value, value); +} +void bcm2835_gpio_clr_fen(uint8_t pin) +{ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPFEN0/4 + pin/32; + uint8_t shift = pin % 32; + uint32_t value = 1 << shift; + bcm2835_peri_set_bits(paddr, 0, value); +} + +/* High detect enable */ +void bcm2835_gpio_hen(uint8_t pin) +{ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPHEN0/4 + pin/32; + uint8_t shift = pin % 32; + uint32_t value = 1 << shift; + bcm2835_peri_set_bits(paddr, value, value); +} +void bcm2835_gpio_clr_hen(uint8_t pin) +{ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPHEN0/4 + pin/32; + uint8_t shift = pin % 32; + uint32_t value = 1 << shift; + bcm2835_peri_set_bits(paddr, 0, value); +} + +/* Low detect enable */ +void bcm2835_gpio_len(uint8_t pin) +{ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPLEN0/4 + pin/32; + uint8_t shift = pin % 32; + uint32_t value = 1 << shift; + bcm2835_peri_set_bits(paddr, value, value); +} +void bcm2835_gpio_clr_len(uint8_t pin) +{ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPLEN0/4 + pin/32; + uint8_t shift = pin % 32; + uint32_t value = 1 << shift; + bcm2835_peri_set_bits(paddr, 0, value); +} + +/* Async rising edge detect enable */ +void bcm2835_gpio_aren(uint8_t pin) +{ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPAREN0/4 + pin/32; + uint8_t shift = pin % 32; + uint32_t value = 1 << shift; + bcm2835_peri_set_bits(paddr, value, value); +} +void bcm2835_gpio_clr_aren(uint8_t pin) +{ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPAREN0/4 + pin/32; + uint8_t shift = pin % 32; + uint32_t value = 1 << shift; + bcm2835_peri_set_bits(paddr, 0, value); +} + +/* Async falling edge detect enable */ +void bcm2835_gpio_afen(uint8_t pin) +{ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPAFEN0/4 + pin/32; + uint8_t shift = pin % 32; + uint32_t value = 1 << shift; + bcm2835_peri_set_bits(paddr, value, value); +} +void bcm2835_gpio_clr_afen(uint8_t pin) +{ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPAFEN0/4 + pin/32; + uint8_t shift = pin % 32; + uint32_t value = 1 << shift; + bcm2835_peri_set_bits(paddr, 0, value); +} + +/* Set pullup/down */ +void bcm2835_gpio_pud(uint8_t pud) +{ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPPUD/4; + bcm2835_peri_write(paddr, pud); +} + +/* Pullup/down clock +// Clocks the value of pud into the GPIO pin +*/ +void bcm2835_gpio_pudclk(uint8_t pin, uint8_t on) +{ + volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPPUDCLK0/4 + pin/32; + uint8_t shift = pin % 32; + bcm2835_peri_write(paddr, (on ? 1 : 0) << shift); +} + +/* Read GPIO pad behaviour for groups of GPIOs */ +uint32_t bcm2835_gpio_pad(uint8_t group) +{ + if (bcm2835_pads == MAP_FAILED) + return 0; + + volatile uint32_t* paddr = bcm2835_pads + BCM2835_PADS_GPIO_0_27/4 + group; + return bcm2835_peri_read(paddr); +} + +/* Set GPIO pad behaviour for groups of GPIOs +// powerup value for all pads is +// BCM2835_PAD_SLEW_RATE_UNLIMITED | BCM2835_PAD_HYSTERESIS_ENABLED | BCM2835_PAD_DRIVE_8mA +*/ +void bcm2835_gpio_set_pad(uint8_t group, uint32_t control) +{ + if (bcm2835_pads == MAP_FAILED) + return; + + volatile uint32_t* paddr = bcm2835_pads + BCM2835_PADS_GPIO_0_27/4 + group; + bcm2835_peri_write(paddr, control | BCM2835_PAD_PASSWRD); +} + +/* Some convenient arduino-like functions +// milliseconds +*/ +void bcm2835_delay(unsigned int millis) +{ + struct timespec sleeper; + + sleeper.tv_sec = (time_t)(millis / 1000); + sleeper.tv_nsec = (long)(millis % 1000) * 1000000; + nanosleep(&sleeper, NULL); +} + +/* microseconds */ +void bcm2835_delayMicroseconds(uint64_t micros) +{ + struct timespec t1; + uint64_t start; + + if (debug) + { + /* Cant access sytem timers in debug mode */ + printf("bcm2835_delayMicroseconds %lld\n", (long long int) micros); + return; + } + + /* Calling nanosleep() takes at least 100-200 us, so use it for + // long waits and use a busy wait on the System Timer for the rest. + */ + start = bcm2835_st_read(); + + /* Not allowed to access timer registers (result is not as precise)*/ + if (start==0) + { + t1.tv_sec = 0; + t1.tv_nsec = 1000 * (long)(micros); + nanosleep(&t1, NULL); + return; + } + + if (micros > 450) + { + t1.tv_sec = 0; + t1.tv_nsec = 1000 * (long)(micros - 200); + nanosleep(&t1, NULL); + } + + bcm2835_st_delay(start, micros); +} + +/* +// Higher level convenience functions +*/ + +/* Set the state of an output */ +void bcm2835_gpio_write(uint8_t pin, uint8_t on) +{ + if (on) + bcm2835_gpio_set(pin); + else + bcm2835_gpio_clr(pin); +} + +/* Set the state of a all 32 outputs in the mask to on or off */ +void bcm2835_gpio_write_multi(uint32_t mask, uint8_t on) +{ + if (on) + bcm2835_gpio_set_multi(mask); + else + bcm2835_gpio_clr_multi(mask); +} + +/* Set the state of a all 32 outputs in the mask to the values in value */ +void bcm2835_gpio_write_mask(uint32_t value, uint32_t mask) +{ + bcm2835_gpio_set_multi(value & mask); + bcm2835_gpio_clr_multi((~value) & mask); +} + +/* Set the pullup/down resistor for a pin +// +// The GPIO Pull-up/down Clock Registers control the actuation of internal pull-downs on +// the respective GPIO pins. These registers must be used in conjunction with the GPPUD +// register to effect GPIO Pull-up/down changes. The following sequence of events is +// required: +// 1. Write to GPPUD to set the required control signal (i.e. Pull-up or Pull-Down or neither +// to remove the current Pull-up/down) +// 2. Wait 150 cycles ? this provides the required set-up time for the control signal +// 3. Write to GPPUDCLK0/1 to clock the control signal into the GPIO pads you wish to +// modify ? NOTE only the pads which receive a clock will be modified, all others will +// retain their previous state. +// 4. Wait 150 cycles ? this provides the required hold time for the control signal +// 5. Write to GPPUD to remove the control signal +// 6. Write to GPPUDCLK0/1 to remove the clock +// +// RPi has P1-03 and P1-05 with 1k8 pullup resistor +*/ +void bcm2835_gpio_set_pud(uint8_t pin, uint8_t pud) +{ + bcm2835_gpio_pud(pud); + delayMicroseconds(10); + bcm2835_gpio_pudclk(pin, 1); + delayMicroseconds(10); + bcm2835_gpio_pud(BCM2835_GPIO_PUD_OFF); + bcm2835_gpio_pudclk(pin, 0); +} + +int bcm2835_spi_begin(void) +{ + volatile uint32_t* paddr; + + if (bcm2835_spi0 == MAP_FAILED) + return 0; /* bcm2835_init() failed, or not root */ + + /* Set the SPI0 pins to the Alt 0 function to enable SPI0 access on them */ + bcm2835_gpio_fsel(RPI_GPIO_P1_26, BCM2835_GPIO_FSEL_ALT0); /* CE1 */ + bcm2835_gpio_fsel(RPI_GPIO_P1_24, BCM2835_GPIO_FSEL_ALT0); /* CE0 */ + bcm2835_gpio_fsel(RPI_GPIO_P1_21, BCM2835_GPIO_FSEL_ALT0); /* MISO */ + bcm2835_gpio_fsel(RPI_GPIO_P1_19, BCM2835_GPIO_FSEL_ALT0); /* MOSI */ + bcm2835_gpio_fsel(RPI_GPIO_P1_23, BCM2835_GPIO_FSEL_ALT0); /* CLK */ + + /* Set the SPI CS register to the some sensible defaults */ + paddr = bcm2835_spi0 + BCM2835_SPI0_CS/4; + bcm2835_peri_write(paddr, 0); /* All 0s */ + + /* Clear TX and RX fifos */ + bcm2835_peri_write_nb(paddr, BCM2835_SPI0_CS_CLEAR); + + return 1; // OK +} + +void bcm2835_spi_end(void) +{ + /* Set all the SPI0 pins back to input */ + bcm2835_gpio_fsel(RPI_GPIO_P1_26, BCM2835_GPIO_FSEL_INPT); /* CE1 */ + bcm2835_gpio_fsel(RPI_GPIO_P1_24, BCM2835_GPIO_FSEL_INPT); /* CE0 */ + bcm2835_gpio_fsel(RPI_GPIO_P1_21, BCM2835_GPIO_FSEL_INPT); /* MISO */ + bcm2835_gpio_fsel(RPI_GPIO_P1_19, BCM2835_GPIO_FSEL_INPT); /* MOSI */ + bcm2835_gpio_fsel(RPI_GPIO_P1_23, BCM2835_GPIO_FSEL_INPT); /* CLK */ +} + +void bcm2835_spi_setBitOrder(uint8_t __attribute__((unused)) order) +{ + /* BCM2835_SPI_BIT_ORDER_MSBFIRST is the only one supported by SPI0 */ +} + +/* defaults to 0, which means a divider of 65536. +// The divisor must be a power of 2. Odd numbers +// rounded down. The maximum SPI clock rate is +// of the APB clock +*/ +void bcm2835_spi_setClockDivider(uint16_t divider) +{ + volatile uint32_t* paddr = bcm2835_spi0 + BCM2835_SPI0_CLK/4; + bcm2835_peri_write(paddr, divider); +} + +void bcm2835_spi_setDataMode(uint8_t mode) +{ + volatile uint32_t* paddr = bcm2835_spi0 + BCM2835_SPI0_CS/4; + /* Mask in the CPO and CPHA bits of CS */ + bcm2835_peri_set_bits(paddr, mode << 2, BCM2835_SPI0_CS_CPOL | BCM2835_SPI0_CS_CPHA); +} + +/* Writes (and reads) a single byte to SPI */ +uint8_t bcm2835_spi_transfer(uint8_t value) +{ + volatile uint32_t* paddr = bcm2835_spi0 + BCM2835_SPI0_CS/4; + volatile uint32_t* fifo = bcm2835_spi0 + BCM2835_SPI0_FIFO/4; + uint32_t ret; + + /* This is Polled transfer as per section 10.6.1 + // BUG ALERT: what happens if we get interupted in this section, and someone else + // accesses a different peripheral? + // Clear TX and RX fifos + */ + bcm2835_peri_set_bits(paddr, BCM2835_SPI0_CS_CLEAR, BCM2835_SPI0_CS_CLEAR); + + /* Set TA = 1 */ + bcm2835_peri_set_bits(paddr, BCM2835_SPI0_CS_TA, BCM2835_SPI0_CS_TA); + + /* Maybe wait for TXD */ + while (!(bcm2835_peri_read(paddr) & BCM2835_SPI0_CS_TXD)) + ; + + /* Write to FIFO, no barrier */ + bcm2835_peri_write_nb(fifo, value); + + /* Wait for DONE to be set */ + while (!(bcm2835_peri_read_nb(paddr) & BCM2835_SPI0_CS_DONE)) + ; + + /* Read any byte that was sent back by the slave while we sere sending to it */ + ret = bcm2835_peri_read_nb(fifo); + + /* Set TA = 0, and also set the barrier */ + bcm2835_peri_set_bits(paddr, 0, BCM2835_SPI0_CS_TA); + + return ret; +} + +/* Writes (and reads) an number of bytes to SPI */ +void bcm2835_spi_transfernb(char* tbuf, char* rbuf, uint32_t len) +{ + volatile uint32_t* paddr = bcm2835_spi0 + BCM2835_SPI0_CS/4; + volatile uint32_t* fifo = bcm2835_spi0 + BCM2835_SPI0_FIFO/4; + uint32_t TXCnt=0; + uint32_t RXCnt=0; + + /* This is Polled transfer as per section 10.6.1 + // BUG ALERT: what happens if we get interupted in this section, and someone else + // accesses a different peripheral? + */ + + /* Clear TX and RX fifos */ + bcm2835_peri_set_bits(paddr, BCM2835_SPI0_CS_CLEAR, BCM2835_SPI0_CS_CLEAR); + + /* Set TA = 1 */ + bcm2835_peri_set_bits(paddr, BCM2835_SPI0_CS_TA, BCM2835_SPI0_CS_TA); + + /* Use the FIFO's to reduce the interbyte times */ + while((TXCnt < len)||(RXCnt < len)) + { + /* TX fifo not full, so add some more bytes */ + while(((bcm2835_peri_read(paddr) & BCM2835_SPI0_CS_TXD))&&(TXCnt < len )) + { + bcm2835_peri_write_nb(fifo, tbuf[TXCnt]); + TXCnt++; + } + /* Rx fifo not empty, so get the next received bytes */ + while(((bcm2835_peri_read(paddr) & BCM2835_SPI0_CS_RXD))&&( RXCnt < len )) + { + rbuf[RXCnt] = bcm2835_peri_read_nb(fifo); + RXCnt++; + } + } + /* Wait for DONE to be set */ + while (!(bcm2835_peri_read_nb(paddr) & BCM2835_SPI0_CS_DONE)) + ; + + /* Set TA = 0, and also set the barrier */ + bcm2835_peri_set_bits(paddr, 0, BCM2835_SPI0_CS_TA); +} + +/* Writes an number of bytes to SPI */ +void bcm2835_spi_writenb(const char* tbuf, uint32_t len) +{ + volatile uint32_t* paddr = bcm2835_spi0 + BCM2835_SPI0_CS/4; + volatile uint32_t* fifo = bcm2835_spi0 + BCM2835_SPI0_FIFO/4; + uint32_t i; + + /* This is Polled transfer as per section 10.6.1 + // BUG ALERT: what happens if we get interupted in this section, and someone else + // accesses a different peripheral? + // Answer: an ISR is required to issue the required memory barriers. + */ + + /* Clear TX and RX fifos */ + bcm2835_peri_set_bits(paddr, BCM2835_SPI0_CS_CLEAR, BCM2835_SPI0_CS_CLEAR); + + /* Set TA = 1 */ + bcm2835_peri_set_bits(paddr, BCM2835_SPI0_CS_TA, BCM2835_SPI0_CS_TA); + + for (i = 0; i < len; i++) + { + /* Maybe wait for TXD */ + while (!(bcm2835_peri_read(paddr) & BCM2835_SPI0_CS_TXD)) + ; + + /* Write to FIFO, no barrier */ + bcm2835_peri_write_nb(fifo, tbuf[i]); + + /* Read from FIFO to prevent stalling */ + while (bcm2835_peri_read(paddr) & BCM2835_SPI0_CS_RXD) + (void) bcm2835_peri_read_nb(fifo); + } + + /* Wait for DONE to be set */ + while (!(bcm2835_peri_read_nb(paddr) & BCM2835_SPI0_CS_DONE)) { + while (bcm2835_peri_read(paddr) & BCM2835_SPI0_CS_RXD) + (void) bcm2835_peri_read_nb(fifo); + }; + + /* Set TA = 0, and also set the barrier */ + bcm2835_peri_set_bits(paddr, 0, BCM2835_SPI0_CS_TA); +} + +/* Writes (and reads) an number of bytes to SPI +// Read bytes are copied over onto the transmit buffer +*/ +void bcm2835_spi_transfern(char* buf, uint32_t len) +{ + bcm2835_spi_transfernb(buf, buf, len); +} + +void bcm2835_spi_chipSelect(uint8_t cs) +{ + volatile uint32_t* paddr = bcm2835_spi0 + BCM2835_SPI0_CS/4; + /* Mask in the CS bits of CS */ + bcm2835_peri_set_bits(paddr, cs, BCM2835_SPI0_CS_CS); +} + +void bcm2835_spi_setChipSelectPolarity(uint8_t cs, uint8_t active) +{ + volatile uint32_t* paddr = bcm2835_spi0 + BCM2835_SPI0_CS/4; + uint8_t shift = 21 + cs; + /* Mask in the appropriate CSPOLn bit */ + bcm2835_peri_set_bits(paddr, active << shift, 1 << shift); +} + +void bcm2835_spi_write(uint16_t data) { +#if 0 + char buf[2]; + + buf[0] = data >> 8; + buf[1] = data & 0xFF; + + bcm2835_spi_transfern(buf, 2); +#else + volatile uint32_t* paddr = bcm2835_spi0 + BCM2835_SPI0_CS/4; + volatile uint32_t* fifo = bcm2835_spi0 + BCM2835_SPI0_FIFO/4; + + /* Clear TX and RX fifos */ + bcm2835_peri_set_bits(paddr, BCM2835_SPI0_CS_CLEAR, BCM2835_SPI0_CS_CLEAR); + + /* Set TA = 1 */ + bcm2835_peri_set_bits(paddr, BCM2835_SPI0_CS_TA, BCM2835_SPI0_CS_TA); + + /* Maybe wait for TXD */ + while (!(bcm2835_peri_read(paddr) & BCM2835_SPI0_CS_TXD)) + ; + + /* Write to FIFO */ + bcm2835_peri_write_nb(fifo, (uint32_t) data >> 8); + bcm2835_peri_write_nb(fifo, data & 0xFF); + + + /* Wait for DONE to be set */ + while (!(bcm2835_peri_read_nb(paddr) & BCM2835_SPI0_CS_DONE)) + ; + + /* Set TA = 0, and also set the barrier */ + bcm2835_peri_set_bits(paddr, 0, BCM2835_SPI0_CS_TA); +#endif +} + +int bcm2835_aux_spi_begin(void) { + volatile uint32_t* enable = bcm2835_aux + BCM2835_AUX_ENABLE/4; + volatile uint32_t* cntl0 = bcm2835_spi1 + BCM2835_AUX_SPI_CNTL0/4; + volatile uint32_t* cntl1 = bcm2835_spi1 + BCM2835_AUX_SPI_CNTL1/4; + + if (bcm2835_spi1 == MAP_FAILED) + return 0; /* bcm2835_init() failed, or not root */ + + /* Set the SPI pins to the Alt 4 function to enable SPI1 access on them */ + bcm2835_gpio_fsel(RPI_V2_GPIO_P1_36, BCM2835_GPIO_FSEL_ALT4); /* SPI1_CE2_N */ + bcm2835_gpio_fsel(RPI_V2_GPIO_P1_35, BCM2835_GPIO_FSEL_ALT4); /* SPI1_MISO */ + bcm2835_gpio_fsel(RPI_V2_GPIO_P1_38, BCM2835_GPIO_FSEL_ALT4); /* SPI1_MOSI */ + bcm2835_gpio_fsel(RPI_V2_GPIO_P1_40, BCM2835_GPIO_FSEL_ALT4); /* SPI1_SCLK */ + + bcm2835_aux_spi_setClockDivider(bcm2835_aux_spi_CalcClockDivider(1000000)); // Default 1MHz SPI + + bcm2835_peri_write(enable, BCM2835_AUX_ENABLE_SPI0); + bcm2835_peri_write(cntl1, 0); + bcm2835_peri_write(cntl0, BCM2835_AUX_SPI_CNTL0_CLEARFIFO); + + return 1; /* OK */ +} + +void bcm2835_aux_spi_end(void) { + /* Set all the SPI1 pins back to input */ + bcm2835_gpio_fsel(RPI_V2_GPIO_P1_36, BCM2835_GPIO_FSEL_INPT); /* SPI1_CE2_N */ + bcm2835_gpio_fsel(RPI_V2_GPIO_P1_35, BCM2835_GPIO_FSEL_INPT); /* SPI1_MISO */ + bcm2835_gpio_fsel(RPI_V2_GPIO_P1_38, BCM2835_GPIO_FSEL_INPT); /* SPI1_MOSI */ + bcm2835_gpio_fsel(RPI_V2_GPIO_P1_40, BCM2835_GPIO_FSEL_INPT); /* SPI1_SCLK */ +} + +#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) + +uint16_t bcm2835_aux_spi_CalcClockDivider(uint32_t speed_hz) { + uint16_t divider; + + if (speed_hz < (uint32_t) BCM2835_AUX_SPI_CLOCK_MIN) { + speed_hz = (uint32_t) BCM2835_AUX_SPI_CLOCK_MIN; + } else if (speed_hz > (uint32_t) BCM2835_AUX_SPI_CLOCK_MAX) { + speed_hz = (uint32_t) BCM2835_AUX_SPI_CLOCK_MAX; + } + + divider = (uint16_t) DIV_ROUND_UP(BCM2835_CORE_CLK_HZ, 2 * speed_hz) - 1; + + if (divider > (uint16_t) BCM2835_AUX_SPI_CNTL0_SPEED_MAX) { + return (uint16_t) BCM2835_AUX_SPI_CNTL0_SPEED_MAX; + } + + return divider; +} + +static uint32_t spi1_speed; + +void bcm2835_aux_spi_setClockDivider(uint16_t divider) { + spi1_speed = (uint32_t) divider; +} + +void bcm2835_aux_spi_write(uint16_t data) { + volatile uint32_t* cntl0 = bcm2835_spi1 + BCM2835_AUX_SPI_CNTL0/4; + volatile uint32_t* cntl1 = bcm2835_spi1 + BCM2835_AUX_SPI_CNTL1/4; + volatile uint32_t* stat = bcm2835_spi1 + BCM2835_AUX_SPI_STAT/4; + volatile uint32_t* io = bcm2835_spi1 + BCM2835_AUX_SPI_IO/4; + + uint32_t _cntl0 = (spi1_speed << BCM2835_AUX_SPI_CNTL0_SPEED_SHIFT); + _cntl0 |= BCM2835_AUX_SPI_CNTL0_CS2_N; + _cntl0 |= BCM2835_AUX_SPI_CNTL0_ENABLE; + _cntl0 |= BCM2835_AUX_SPI_CNTL0_MSBF_OUT; + _cntl0 |= 16; // Shift length + + bcm2835_peri_write(cntl0, _cntl0); + bcm2835_peri_write(cntl1, BCM2835_AUX_SPI_CNTL1_MSBF_IN); + + while (bcm2835_peri_read(stat) & BCM2835_AUX_SPI_STAT_TX_FULL) + ; + + bcm2835_peri_write(io, (uint32_t) data << 16); +} + +void bcm2835_aux_spi_writenb(const char *tbuf, uint32_t len) { + volatile uint32_t* cntl0 = bcm2835_spi1 + BCM2835_AUX_SPI_CNTL0/4; + volatile uint32_t* cntl1 = bcm2835_spi1 + BCM2835_AUX_SPI_CNTL1/4; + volatile uint32_t* stat = bcm2835_spi1 + BCM2835_AUX_SPI_STAT/4; + volatile uint32_t* txhold = bcm2835_spi1 + BCM2835_AUX_SPI_TXHOLD/4; + volatile uint32_t* io = bcm2835_spi1 + BCM2835_AUX_SPI_IO/4; + + char *tx = (char *) tbuf; + uint32_t tx_len = len; + uint32_t count; + uint32_t data; + uint32_t i; + uint8_t byte; + + uint32_t _cntl0 = (spi1_speed << BCM2835_AUX_SPI_CNTL0_SPEED_SHIFT); + _cntl0 |= BCM2835_AUX_SPI_CNTL0_CS2_N; + _cntl0 |= BCM2835_AUX_SPI_CNTL0_ENABLE; + _cntl0 |= BCM2835_AUX_SPI_CNTL0_MSBF_OUT; + _cntl0 |= BCM2835_AUX_SPI_CNTL0_VAR_WIDTH; + + bcm2835_peri_write(cntl0, _cntl0); + bcm2835_peri_write(cntl1, BCM2835_AUX_SPI_CNTL1_MSBF_IN); + + while (tx_len > 0) { + + while (bcm2835_peri_read(stat) & BCM2835_AUX_SPI_STAT_TX_FULL) + ; + + count = MIN(tx_len, 3); + data = 0; + + for (i = 0; i < count; i++) { + byte = (tx != NULL) ? (uint8_t) *tx++ : (uint8_t) 0; + data |= byte << (8 * (2 - i)); + } + + data |= (count * 8) << 24; + tx_len -= count; + + if (tx_len != 0) { + bcm2835_peri_write(txhold, data); + } else { + bcm2835_peri_write(io, data); + } + + while (bcm2835_peri_read(stat) & BCM2835_AUX_SPI_STAT_BUSY) + ; + + (void) bcm2835_peri_read(io); + } +} + +void bcm2835_aux_spi_transfernb(const char *tbuf, char *rbuf, uint32_t len) { + volatile uint32_t* cntl0 = bcm2835_spi1 + BCM2835_AUX_SPI_CNTL0/4; + volatile uint32_t* cntl1 = bcm2835_spi1 + BCM2835_AUX_SPI_CNTL1/4; + volatile uint32_t* stat = bcm2835_spi1 + BCM2835_AUX_SPI_STAT/4; + volatile uint32_t* txhold = bcm2835_spi1 + BCM2835_AUX_SPI_TXHOLD/4; + volatile uint32_t* io = bcm2835_spi1 + BCM2835_AUX_SPI_IO/4; + + char *tx = (char *)tbuf; + char *rx = (char *)rbuf; + uint32_t tx_len = len; + uint32_t rx_len = len; + uint32_t count; + uint32_t data; + uint32_t i; + uint8_t byte; + + uint32_t _cntl0 = (spi1_speed << BCM2835_AUX_SPI_CNTL0_SPEED_SHIFT); + _cntl0 |= BCM2835_AUX_SPI_CNTL0_CS2_N; + _cntl0 |= BCM2835_AUX_SPI_CNTL0_ENABLE; + _cntl0 |= BCM2835_AUX_SPI_CNTL0_MSBF_OUT; + _cntl0 |= BCM2835_AUX_SPI_CNTL0_VAR_WIDTH; + + bcm2835_peri_write(cntl0, _cntl0); + bcm2835_peri_write(cntl1, BCM2835_AUX_SPI_CNTL1_MSBF_IN); + + while ((tx_len > 0) || (rx_len > 0)) { + + while (!(bcm2835_peri_read(stat) & BCM2835_AUX_SPI_STAT_TX_FULL) && (tx_len > 0)) { + count = MIN(tx_len, 3); + data = 0; + + for (i = 0; i < count; i++) { + byte = (tx != NULL) ? (uint8_t) *tx++ : (uint8_t) 0; + data |= byte << (8 * (2 - i)); + } + + data |= (count * 8) << 24; + tx_len -= count; + + if (tx_len != 0) { + bcm2835_peri_write(txhold, data); + } else { + bcm2835_peri_write(io, data); + } + + } + + while (!(bcm2835_peri_read(stat) & BCM2835_AUX_SPI_STAT_RX_EMPTY) && (rx_len > 0)) { + count = MIN(rx_len, 3); + data = bcm2835_peri_read(io); + + if (rbuf != NULL) { + switch (count) { + case 3: + *rx++ = (char)((data >> 16) & 0xFF); + /*@fallthrough@*/ + /* no break */ + case 2: + *rx++ = (char)((data >> 8) & 0xFF); + /*@fallthrough@*/ + /* no break */ + case 1: + *rx++ = (char)((data >> 0) & 0xFF); + } + } + + rx_len -= count; + } + + while (!(bcm2835_peri_read(stat) & BCM2835_AUX_SPI_STAT_BUSY) && (rx_len > 0)) { + count = MIN(rx_len, 3); + data = bcm2835_peri_read(io); + + if (rbuf != NULL) { + switch (count) { + case 3: + *rx++ = (char)((data >> 16) & 0xFF); + /*@fallthrough@*/ + /* no break */ + case 2: + *rx++ = (char)((data >> 8) & 0xFF); + /*@fallthrough@*/ + /* no break */ + case 1: + *rx++ = (char)((data >> 0) & 0xFF); + } + } + + rx_len -= count; + } + } +} + +void bcm2835_aux_spi_transfern(char *buf, uint32_t len) { + bcm2835_aux_spi_transfernb(buf, buf, len); +} + +int bcm2835_i2c_begin(void) +{ + uint16_t cdiv; + + if ( bcm2835_bsc0 == MAP_FAILED + || bcm2835_bsc1 == MAP_FAILED) + return 0; /* bcm2835_init() failed, or not root */ + +#ifdef I2C_V1 + volatile uint32_t* paddr = bcm2835_bsc0 + BCM2835_BSC_DIV/4; + /* Set the I2C/BSC0 pins to the Alt 0 function to enable I2C access on them */ + bcm2835_gpio_fsel(RPI_GPIO_P1_03, BCM2835_GPIO_FSEL_ALT0); /* SDA */ + bcm2835_gpio_fsel(RPI_GPIO_P1_05, BCM2835_GPIO_FSEL_ALT0); /* SCL */ +#else + volatile uint32_t* paddr = bcm2835_bsc1 + BCM2835_BSC_DIV/4; + /* Set the I2C/BSC1 pins to the Alt 0 function to enable I2C access on them */ + bcm2835_gpio_fsel(RPI_V2_GPIO_P1_03, BCM2835_GPIO_FSEL_ALT0); /* SDA */ + bcm2835_gpio_fsel(RPI_V2_GPIO_P1_05, BCM2835_GPIO_FSEL_ALT0); /* SCL */ +#endif + + /* Read the clock divider register */ + cdiv = bcm2835_peri_read(paddr); + /* Calculate time for transmitting one byte + // 1000000 = micros seconds in a second + // 9 = Clocks per byte : 8 bits + ACK + */ + i2c_byte_wait_us = ((float)cdiv / BCM2835_CORE_CLK_HZ) * 1000000 * 9; + + return 1; +} + +void bcm2835_i2c_end(void) +{ +#ifdef I2C_V1 + /* Set all the I2C/BSC0 pins back to input */ + bcm2835_gpio_fsel(RPI_GPIO_P1_03, BCM2835_GPIO_FSEL_INPT); /* SDA */ + bcm2835_gpio_fsel(RPI_GPIO_P1_05, BCM2835_GPIO_FSEL_INPT); /* SCL */ +#else + /* Set all the I2C/BSC1 pins back to input */ + bcm2835_gpio_fsel(RPI_V2_GPIO_P1_03, BCM2835_GPIO_FSEL_INPT); /* SDA */ + bcm2835_gpio_fsel(RPI_V2_GPIO_P1_05, BCM2835_GPIO_FSEL_INPT); /* SCL */ +#endif +} + +void bcm2835_i2c_setSlaveAddress(uint8_t addr) +{ + /* Set I2C Device Address */ +#ifdef I2C_V1 + volatile uint32_t* paddr = bcm2835_bsc0 + BCM2835_BSC_A/4; +#else + volatile uint32_t* paddr = bcm2835_bsc1 + BCM2835_BSC_A/4; +#endif + bcm2835_peri_write(paddr, addr); +} + +/* defaults to 0x5dc, should result in a 166.666 kHz I2C clock frequency. +// The divisor must be a power of 2. Odd numbers +// rounded down. +*/ +void bcm2835_i2c_setClockDivider(uint16_t divider) +{ +#ifdef I2C_V1 + volatile uint32_t* paddr = bcm2835_bsc0 + BCM2835_BSC_DIV/4; +#else + volatile uint32_t* paddr = bcm2835_bsc1 + BCM2835_BSC_DIV/4; +#endif + bcm2835_peri_write(paddr, divider); + /* Calculate time for transmitting one byte + // 1000000 = micros seconds in a second + // 9 = Clocks per byte : 8 bits + ACK + */ + i2c_byte_wait_us = ((float)divider / BCM2835_CORE_CLK_HZ) * 1000000 * 9; +} + +/* set I2C clock divider by means of a baudrate number */ +void bcm2835_i2c_set_baudrate(uint32_t baudrate) +{ + uint32_t divider; + /* use 0xFFFE mask to limit a max value and round down any odd number */ + divider = (BCM2835_CORE_CLK_HZ / baudrate) & 0xFFFE; + bcm2835_i2c_setClockDivider( (uint16_t)divider ); +} + +/* Writes an number of bytes to I2C */ +uint8_t bcm2835_i2c_write(const char * buf, uint32_t len) +{ +#ifdef I2C_V1 + volatile uint32_t* dlen = bcm2835_bsc0 + BCM2835_BSC_DLEN/4; + volatile uint32_t* fifo = bcm2835_bsc0 + BCM2835_BSC_FIFO/4; + volatile uint32_t* status = bcm2835_bsc0 + BCM2835_BSC_S/4; + volatile uint32_t* control = bcm2835_bsc0 + BCM2835_BSC_C/4; +#else + volatile uint32_t* dlen = bcm2835_bsc1 + BCM2835_BSC_DLEN/4; + volatile uint32_t* fifo = bcm2835_bsc1 + BCM2835_BSC_FIFO/4; + volatile uint32_t* status = bcm2835_bsc1 + BCM2835_BSC_S/4; + volatile uint32_t* control = bcm2835_bsc1 + BCM2835_BSC_C/4; +#endif + + uint32_t remaining = len; + uint32_t i = 0; + uint8_t reason = BCM2835_I2C_REASON_OK; + + /* Clear FIFO */ + bcm2835_peri_set_bits(control, BCM2835_BSC_C_CLEAR_1 , BCM2835_BSC_C_CLEAR_1 ); + /* Clear Status */ + bcm2835_peri_write(status, BCM2835_BSC_S_CLKT | BCM2835_BSC_S_ERR | BCM2835_BSC_S_DONE); + /* Set Data Length */ + bcm2835_peri_write(dlen, len); + /* pre populate FIFO with max buffer */ + while( remaining && ( i < BCM2835_BSC_FIFO_SIZE ) ) + { + bcm2835_peri_write_nb(fifo, buf[i]); + i++; + remaining--; + } + + /* Enable device and start transfer */ + bcm2835_peri_write(control, BCM2835_BSC_C_I2CEN | BCM2835_BSC_C_ST); + + /* Transfer is over when BCM2835_BSC_S_DONE */ + while(!(bcm2835_peri_read(status) & BCM2835_BSC_S_DONE )) + { + while ( remaining && (bcm2835_peri_read(status) & BCM2835_BSC_S_TXD )) + { + /* Write to FIFO */ + bcm2835_peri_write(fifo, buf[i]); + i++; + remaining--; + } + } + + /* Received a NACK */ + if (bcm2835_peri_read(status) & BCM2835_BSC_S_ERR) + { + reason = BCM2835_I2C_REASON_ERROR_NACK; + } + + /* Received Clock Stretch Timeout */ + else if (bcm2835_peri_read(status) & BCM2835_BSC_S_CLKT) + { + reason = BCM2835_I2C_REASON_ERROR_CLKT; + } + + /* Not all data is sent */ + else if (remaining) + { + reason = BCM2835_I2C_REASON_ERROR_DATA; + } + + bcm2835_peri_set_bits(control, BCM2835_BSC_S_DONE , BCM2835_BSC_S_DONE); + + return reason; +} + +/* Read an number of bytes from I2C */ +uint8_t bcm2835_i2c_read(char* buf, uint32_t len) +{ +#ifdef I2C_V1 + volatile uint32_t* dlen = bcm2835_bsc0 + BCM2835_BSC_DLEN/4; + volatile uint32_t* fifo = bcm2835_bsc0 + BCM2835_BSC_FIFO/4; + volatile uint32_t* status = bcm2835_bsc0 + BCM2835_BSC_S/4; + volatile uint32_t* control = bcm2835_bsc0 + BCM2835_BSC_C/4; +#else + volatile uint32_t* dlen = bcm2835_bsc1 + BCM2835_BSC_DLEN/4; + volatile uint32_t* fifo = bcm2835_bsc1 + BCM2835_BSC_FIFO/4; + volatile uint32_t* status = bcm2835_bsc1 + BCM2835_BSC_S/4; + volatile uint32_t* control = bcm2835_bsc1 + BCM2835_BSC_C/4; +#endif + + uint32_t remaining = len; + uint32_t i = 0; + uint8_t reason = BCM2835_I2C_REASON_OK; + + /* Clear FIFO */ + bcm2835_peri_set_bits(control, BCM2835_BSC_C_CLEAR_1 , BCM2835_BSC_C_CLEAR_1 ); + /* Clear Status */ + bcm2835_peri_write_nb(status, BCM2835_BSC_S_CLKT | BCM2835_BSC_S_ERR | BCM2835_BSC_S_DONE); + /* Set Data Length */ + bcm2835_peri_write_nb(dlen, len); + /* Start read */ + bcm2835_peri_write_nb(control, BCM2835_BSC_C_I2CEN | BCM2835_BSC_C_ST | BCM2835_BSC_C_READ); + + /* wait for transfer to complete */ + while (!(bcm2835_peri_read_nb(status) & BCM2835_BSC_S_DONE)) + { + /* we must empty the FIFO as it is populated and not use any delay */ + while (bcm2835_peri_read_nb(status) & BCM2835_BSC_S_RXD) + { + /* Read from FIFO, no barrier */ + buf[i] = bcm2835_peri_read_nb(fifo); + i++; + remaining--; + } + } + + /* transfer has finished - grab any remaining stuff in FIFO */ + while (remaining && (bcm2835_peri_read_nb(status) & BCM2835_BSC_S_RXD)) + { + /* Read from FIFO, no barrier */ + buf[i] = bcm2835_peri_read_nb(fifo); + i++; + remaining--; + } + + /* Received a NACK */ + if (bcm2835_peri_read(status) & BCM2835_BSC_S_ERR) + { + reason = BCM2835_I2C_REASON_ERROR_NACK; + } + + /* Received Clock Stretch Timeout */ + else if (bcm2835_peri_read(status) & BCM2835_BSC_S_CLKT) + { + reason = BCM2835_I2C_REASON_ERROR_CLKT; + } + + /* Not all data is received */ + else if (remaining) + { + reason = BCM2835_I2C_REASON_ERROR_DATA; + } + + bcm2835_peri_set_bits(control, BCM2835_BSC_S_DONE , BCM2835_BSC_S_DONE); + + return reason; +} + +/* Read an number of bytes from I2C sending a repeated start after writing +// the required register. Only works if your device supports this mode +*/ +uint8_t bcm2835_i2c_read_register_rs(char* regaddr, char* buf, uint32_t len) +{ +#ifdef I2C_V1 + volatile uint32_t* dlen = bcm2835_bsc0 + BCM2835_BSC_DLEN/4; + volatile uint32_t* fifo = bcm2835_bsc0 + BCM2835_BSC_FIFO/4; + volatile uint32_t* status = bcm2835_bsc0 + BCM2835_BSC_S/4; + volatile uint32_t* control = bcm2835_bsc0 + BCM2835_BSC_C/4; +#else + volatile uint32_t* dlen = bcm2835_bsc1 + BCM2835_BSC_DLEN/4; + volatile uint32_t* fifo = bcm2835_bsc1 + BCM2835_BSC_FIFO/4; + volatile uint32_t* status = bcm2835_bsc1 + BCM2835_BSC_S/4; + volatile uint32_t* control = bcm2835_bsc1 + BCM2835_BSC_C/4; +#endif + uint32_t remaining = len; + uint32_t i = 0; + uint8_t reason = BCM2835_I2C_REASON_OK; + + /* Clear FIFO */ + bcm2835_peri_set_bits(control, BCM2835_BSC_C_CLEAR_1 , BCM2835_BSC_C_CLEAR_1 ); + /* Clear Status */ + bcm2835_peri_write(status, BCM2835_BSC_S_CLKT | BCM2835_BSC_S_ERR | BCM2835_BSC_S_DONE); + /* Set Data Length */ + bcm2835_peri_write(dlen, 1); + /* Enable device and start transfer */ + bcm2835_peri_write(control, BCM2835_BSC_C_I2CEN); + bcm2835_peri_write(fifo, regaddr[0]); + bcm2835_peri_write(control, BCM2835_BSC_C_I2CEN | BCM2835_BSC_C_ST); + + /* poll for transfer has started */ + while ( !( bcm2835_peri_read(status) & BCM2835_BSC_S_TA ) ) + { + /* Linux may cause us to miss entire transfer stage */ + if(bcm2835_peri_read(status) & BCM2835_BSC_S_DONE) + break; + } + + /* Send a repeated start with read bit set in address */ + bcm2835_peri_write(dlen, len); + bcm2835_peri_write(control, BCM2835_BSC_C_I2CEN | BCM2835_BSC_C_ST | BCM2835_BSC_C_READ ); + + /* Wait for write to complete and first byte back. */ + bcm2835_delayMicroseconds(i2c_byte_wait_us * 3); + + /* wait for transfer to complete */ + while (!(bcm2835_peri_read(status) & BCM2835_BSC_S_DONE)) + { + /* we must empty the FIFO as it is populated and not use any delay */ + while (remaining && bcm2835_peri_read(status) & BCM2835_BSC_S_RXD) + { + /* Read from FIFO */ + buf[i] = bcm2835_peri_read(fifo); + i++; + remaining--; + } + } + + /* transfer has finished - grab any remaining stuff in FIFO */ + while (remaining && (bcm2835_peri_read(status) & BCM2835_BSC_S_RXD)) + { + /* Read from FIFO */ + buf[i] = bcm2835_peri_read(fifo); + i++; + remaining--; + } + + /* Received a NACK */ + if (bcm2835_peri_read(status) & BCM2835_BSC_S_ERR) + { + reason = BCM2835_I2C_REASON_ERROR_NACK; + } + + /* Received Clock Stretch Timeout */ + else if (bcm2835_peri_read(status) & BCM2835_BSC_S_CLKT) + { + reason = BCM2835_I2C_REASON_ERROR_CLKT; + } + + /* Not all data is sent */ + else if (remaining) + { + reason = BCM2835_I2C_REASON_ERROR_DATA; + } + + bcm2835_peri_set_bits(control, BCM2835_BSC_S_DONE , BCM2835_BSC_S_DONE); + + return reason; +} + +/* Sending an arbitrary number of bytes before issuing a repeated start +// (with no prior stop) and reading a response. Some devices require this behavior. +*/ +uint8_t bcm2835_i2c_write_read_rs(char* cmds, uint32_t cmds_len, char* buf, uint32_t buf_len) +{ +#ifdef I2C_V1 + volatile uint32_t* dlen = bcm2835_bsc0 + BCM2835_BSC_DLEN/4; + volatile uint32_t* fifo = bcm2835_bsc0 + BCM2835_BSC_FIFO/4; + volatile uint32_t* status = bcm2835_bsc0 + BCM2835_BSC_S/4; + volatile uint32_t* control = bcm2835_bsc0 + BCM2835_BSC_C/4; +#else + volatile uint32_t* dlen = bcm2835_bsc1 + BCM2835_BSC_DLEN/4; + volatile uint32_t* fifo = bcm2835_bsc1 + BCM2835_BSC_FIFO/4; + volatile uint32_t* status = bcm2835_bsc1 + BCM2835_BSC_S/4; + volatile uint32_t* control = bcm2835_bsc1 + BCM2835_BSC_C/4; +#endif + + uint32_t remaining = cmds_len; + uint32_t i = 0; + uint8_t reason = BCM2835_I2C_REASON_OK; + + /* Clear FIFO */ + bcm2835_peri_set_bits(control, BCM2835_BSC_C_CLEAR_1 , BCM2835_BSC_C_CLEAR_1 ); + + /* Clear Status */ + bcm2835_peri_write(status, BCM2835_BSC_S_CLKT | BCM2835_BSC_S_ERR | BCM2835_BSC_S_DONE); + + /* Set Data Length */ + bcm2835_peri_write(dlen, cmds_len); + + /* pre populate FIFO with max buffer */ + while( remaining && ( i < BCM2835_BSC_FIFO_SIZE ) ) + { + bcm2835_peri_write_nb(fifo, cmds[i]); + i++; + remaining--; + } + + /* Enable device and start transfer */ + bcm2835_peri_write(control, BCM2835_BSC_C_I2CEN | BCM2835_BSC_C_ST); + + /* poll for transfer has started (way to do repeated start, from BCM2835 datasheet) */ + while ( !( bcm2835_peri_read(status) & BCM2835_BSC_S_TA ) ) + { + /* Linux may cause us to miss entire transfer stage */ + if(bcm2835_peri_read_nb(status) & BCM2835_BSC_S_DONE) + break; + } + + remaining = buf_len; + i = 0; + + /* Send a repeated start with read bit set in address */ + bcm2835_peri_write(dlen, buf_len); + bcm2835_peri_write(control, BCM2835_BSC_C_I2CEN | BCM2835_BSC_C_ST | BCM2835_BSC_C_READ ); + + /* Wait for write to complete and first byte back. */ + bcm2835_delayMicroseconds(i2c_byte_wait_us * (cmds_len + 1)); + + /* wait for transfer to complete */ + while (!(bcm2835_peri_read_nb(status) & BCM2835_BSC_S_DONE)) + { + /* we must empty the FIFO as it is populated and not use any delay */ + while (remaining && bcm2835_peri_read(status) & BCM2835_BSC_S_RXD) + { + /* Read from FIFO, no barrier */ + buf[i] = bcm2835_peri_read_nb(fifo); + i++; + remaining--; + } + } + + /* transfer has finished - grab any remaining stuff in FIFO */ + while (remaining && (bcm2835_peri_read(status) & BCM2835_BSC_S_RXD)) + { + /* Read from FIFO */ + buf[i] = bcm2835_peri_read(fifo); + i++; + remaining--; + } + + /* Received a NACK */ + if (bcm2835_peri_read(status) & BCM2835_BSC_S_ERR) + { + reason = BCM2835_I2C_REASON_ERROR_NACK; + } + + /* Received Clock Stretch Timeout */ + else if (bcm2835_peri_read(status) & BCM2835_BSC_S_CLKT) + { + reason = BCM2835_I2C_REASON_ERROR_CLKT; + } + + /* Not all data is sent */ + else if (remaining) + { + reason = BCM2835_I2C_REASON_ERROR_DATA; + } + + bcm2835_peri_set_bits(control, BCM2835_BSC_S_DONE , BCM2835_BSC_S_DONE); + + return reason; +} + +/* Read the System Timer Counter (64-bits) */ +uint64_t bcm2835_st_read(void) +{ + volatile uint32_t* paddr; + uint32_t hi, lo; + uint64_t st; + + if (bcm2835_st==MAP_FAILED) + return 0; + + paddr = bcm2835_st + BCM2835_ST_CHI/4; + hi = bcm2835_peri_read(paddr); + + paddr = bcm2835_st + BCM2835_ST_CLO/4; + lo = bcm2835_peri_read(paddr); + + paddr = bcm2835_st + BCM2835_ST_CHI/4; + st = bcm2835_peri_read(paddr); + + /* Test for overflow */ + if (st == hi) + { + st <<= 32; + st += lo; + } + else + { + st <<= 32; + paddr = bcm2835_st + BCM2835_ST_CLO/4; + st += bcm2835_peri_read(paddr); + } + return st; +} + +/* Delays for the specified number of microseconds with offset */ +void bcm2835_st_delay(uint64_t offset_micros, uint64_t micros) +{ + uint64_t compare = offset_micros + micros; + + while(bcm2835_st_read() < compare) + ; +} + +/* PWM */ + +void bcm2835_pwm_set_clock(uint32_t divisor) +{ + if ( bcm2835_clk == MAP_FAILED + || bcm2835_pwm == MAP_FAILED) + return; /* bcm2835_init() failed or not root */ + + /* From Gerts code */ + divisor &= 0xfff; + /* Stop PWM clock */ + bcm2835_peri_write(bcm2835_clk + BCM2835_PWMCLK_CNTL, BCM2835_PWM_PASSWRD | 0x01); + bcm2835_delay(110); /* Prevents clock going slow */ + /* Wait for the clock to be not busy */ + while ((bcm2835_peri_read(bcm2835_clk + BCM2835_PWMCLK_CNTL) & 0x80) != 0) + bcm2835_delay(1); + /* set the clock divider and enable PWM clock */ + bcm2835_peri_write(bcm2835_clk + BCM2835_PWMCLK_DIV, BCM2835_PWM_PASSWRD | (divisor << 12)); + bcm2835_peri_write(bcm2835_clk + BCM2835_PWMCLK_CNTL, BCM2835_PWM_PASSWRD | 0x11); /* Source=osc and enable */ +} + +void bcm2835_pwm_set_mode(uint8_t channel, uint8_t markspace, uint8_t enabled) +{ + if ( bcm2835_clk == MAP_FAILED + || bcm2835_pwm == MAP_FAILED) + return; /* bcm2835_init() failed or not root */ + + uint32_t control = bcm2835_peri_read(bcm2835_pwm + BCM2835_PWM_CONTROL); + + if (channel == 0) + { + if (markspace) + control |= BCM2835_PWM0_MS_MODE; + else + control &= ~BCM2835_PWM0_MS_MODE; + if (enabled) + control |= BCM2835_PWM0_ENABLE; + else + control &= ~BCM2835_PWM0_ENABLE; + } + else if (channel == 1) + { + if (markspace) + control |= BCM2835_PWM1_MS_MODE; + else + control &= ~BCM2835_PWM1_MS_MODE; + if (enabled) + control |= BCM2835_PWM1_ENABLE; + else + control &= ~BCM2835_PWM1_ENABLE; + } + + /* If you use the barrier here, wierd things happen, and the commands dont work */ + bcm2835_peri_write_nb(bcm2835_pwm + BCM2835_PWM_CONTROL, control); + /* bcm2835_peri_write_nb(bcm2835_pwm + BCM2835_PWM_CONTROL, BCM2835_PWM0_ENABLE | BCM2835_PWM1_ENABLE | BCM2835_PWM0_MS_MODE | BCM2835_PWM1_MS_MODE); */ + +} + +void bcm2835_pwm_set_range(uint8_t channel, uint32_t range) +{ + if ( bcm2835_clk == MAP_FAILED + || bcm2835_pwm == MAP_FAILED) + return; /* bcm2835_init() failed or not root */ + + if (channel == 0) + bcm2835_peri_write_nb(bcm2835_pwm + BCM2835_PWM0_RANGE, range); + else if (channel == 1) + bcm2835_peri_write_nb(bcm2835_pwm + BCM2835_PWM1_RANGE, range); +} + +void bcm2835_pwm_set_data(uint8_t channel, uint32_t data) +{ + if ( bcm2835_clk == MAP_FAILED + || bcm2835_pwm == MAP_FAILED) + return; /* bcm2835_init() failed or not root */ + + if (channel == 0) + bcm2835_peri_write_nb(bcm2835_pwm + BCM2835_PWM0_DATA, data); + else if (channel == 1) + bcm2835_peri_write_nb(bcm2835_pwm + BCM2835_PWM1_DATA, data); +} + +/* Allocate page-aligned memory. */ +void *malloc_aligned(size_t size) +{ + void *mem; + errno = posix_memalign(&mem, BCM2835_PAGE_SIZE, size); + return (errno ? NULL : mem); +} + +/* Map 'size' bytes starting at 'off' in file 'fd' to memory. +// Return mapped address on success, MAP_FAILED otherwise. +// On error print message. +*/ +static void *mapmem(const char *msg, size_t size, int fd, off_t off) +{ + void *map = mmap(NULL, size, (PROT_READ | PROT_WRITE), MAP_SHARED, fd, off); + if (map == MAP_FAILED) + fprintf(stderr, "bcm2835_init: %s mmap failed: %s\n", msg, strerror(errno)); + return map; +} + +static void unmapmem(void **pmem, size_t size) +{ + if (*pmem == MAP_FAILED) return; + munmap(*pmem, size); + *pmem = MAP_FAILED; +} + +/* Initialise this library. */ +int bcm2835_init(void) +{ + int memfd; + int ok; + FILE *fp; + + if (debug) + { + bcm2835_peripherals = (uint32_t*)BCM2835_PERI_BASE; + + bcm2835_pads = bcm2835_peripherals + BCM2835_GPIO_PADS/4; + bcm2835_clk = bcm2835_peripherals + BCM2835_CLOCK_BASE/4; + bcm2835_gpio = bcm2835_peripherals + BCM2835_GPIO_BASE/4; + bcm2835_pwm = bcm2835_peripherals + BCM2835_GPIO_PWM/4; + bcm2835_spi0 = bcm2835_peripherals + BCM2835_SPI0_BASE/4; + bcm2835_bsc0 = bcm2835_peripherals + BCM2835_BSC0_BASE/4; + bcm2835_bsc1 = bcm2835_peripherals + BCM2835_BSC1_BASE/4; + bcm2835_st = bcm2835_peripherals + BCM2835_ST_BASE/4; + bcm2835_aux = bcm2835_peripherals + BCM2835_AUX_BASE/4; + bcm2835_spi1 = bcm2835_peripherals + BCM2835_SPI1_BASE/4; + + return 1; /* Success */ + } + + /* Figure out the base and size of the peripheral address block + // using the device-tree. Required for RPi2, optional for RPi 1 + */ + if ((fp = fopen(BMC2835_RPI2_DT_FILENAME , "rb"))) + { + unsigned char buf[4]; + fseek(fp, BMC2835_RPI2_DT_PERI_BASE_ADDRESS_OFFSET, SEEK_SET); + if (fread(buf, 1, sizeof(buf), fp) == sizeof(buf)) + bcm2835_peripherals_base = (uint32_t *)((long)buf[0] << 24 | buf[1] << 16 | buf[2] << 8 | buf[3] << 0); + fseek(fp, BMC2835_RPI2_DT_PERI_SIZE_OFFSET, SEEK_SET); + if (fread(buf, 1, sizeof(buf), fp) == sizeof(buf)) + bcm2835_peripherals_size = (buf[0] << 24 | buf[1] << 16 | buf[2] << 8 | buf[3] << 0); + fclose(fp); + } + /* else we are prob on RPi 1 with BCM2835, and use the hardwired defaults */ + + /* Now get ready to map the peripherals block + * If we are not root, try for the new /dev/gpiomem interface and accept + * the fact that we can only access GPIO + * else try for the /dev/mem interface and get access to everything + */ + memfd = -1; + ok = 0; + if (geteuid() == 0) + { + /* Open the master /dev/mem device */ + if ((memfd = open("/dev/mem", O_RDWR | O_SYNC) ) < 0) + { + fprintf(stderr, "bcm2835_init: Unable to open /dev/mem: %s\n", + strerror(errno)) ; + goto exit; + } + + /* Base of the peripherals block is mapped to VM */ + bcm2835_peripherals = static_cast(mapmem("gpio", bcm2835_peripherals_size, memfd, (off_t)bcm2835_peripherals_base)); + if (bcm2835_peripherals == MAP_FAILED) goto exit; + + /* Now compute the base addresses of various peripherals, + // which are at fixed offsets within the mapped peripherals block + // Caution: bcm2835_peripherals is uint32_t*, so divide offsets by 4 + */ + bcm2835_gpio = bcm2835_peripherals + BCM2835_GPIO_BASE/4; + bcm2835_pwm = bcm2835_peripherals + BCM2835_GPIO_PWM/4; + bcm2835_clk = bcm2835_peripherals + BCM2835_CLOCK_BASE/4; + bcm2835_pads = bcm2835_peripherals + BCM2835_GPIO_PADS/4; + bcm2835_spi0 = bcm2835_peripherals + BCM2835_SPI0_BASE/4; + bcm2835_bsc0 = bcm2835_peripherals + BCM2835_BSC0_BASE/4; /* I2C */ + bcm2835_bsc1 = bcm2835_peripherals + BCM2835_BSC1_BASE/4; /* I2C */ + bcm2835_st = bcm2835_peripherals + BCM2835_ST_BASE/4; + bcm2835_aux = bcm2835_peripherals + BCM2835_AUX_BASE/4; + bcm2835_spi1 = bcm2835_peripherals + BCM2835_SPI1_BASE/4; + + ok = 1; + } + else + { + /* Not root, try /dev/gpiomem */ + /* Open the master /dev/mem device */ + if ((memfd = open("/dev/gpiomem", O_RDWR | O_SYNC) ) < 0) + { + fprintf(stderr, "bcm2835_init: Unable to open /dev/gpiomem: %s\n", + strerror(errno)) ; + goto exit; + } + + /* Base of the peripherals block is mapped to VM */ + bcm2835_peripherals_base = 0; + bcm2835_peripherals = static_cast(mapmem("gpio", bcm2835_peripherals_size, memfd, (off_t)bcm2835_peripherals_base)); + if (bcm2835_peripherals == MAP_FAILED) goto exit; + bcm2835_gpio = bcm2835_peripherals; + ok = 1; + } + +exit: + if (memfd >= 0) + close(memfd); + + if (!ok) + bcm2835_close(); + + return ok; +} + +/* Close this library and deallocate everything */ +int bcm2835_close(void) +{ + if (debug) return 1; /* Success */ + + unmapmem((void**) &bcm2835_peripherals, bcm2835_peripherals_size); + bcm2835_peripherals = static_cast(MAP_FAILED); + bcm2835_gpio = static_cast(MAP_FAILED); + bcm2835_pwm = static_cast(MAP_FAILED); + bcm2835_clk = static_cast(MAP_FAILED); + bcm2835_pads = static_cast(MAP_FAILED); + bcm2835_spi0 = static_cast(MAP_FAILED); + bcm2835_bsc0 = static_cast(MAP_FAILED); + bcm2835_bsc1 = static_cast(MAP_FAILED); + bcm2835_st = static_cast(MAP_FAILED); + bcm2835_aux = static_cast(MAP_FAILED); + bcm2835_spi1 = static_cast(MAP_FAILED); + return 1; /* Success */ +} + +#ifdef BCM2835_TEST +/* this is a simple test program that prints out what it will do rather than +// actually doing it +*/ +int main(int argc, char **argv) +{ + /* Be non-destructive */ + bcm2835_set_debug(1); + + if (!bcm2835_init()) + return 1; + + /* Configure some GPIO pins fo some testing + // Set RPI pin P1-11 to be an output + */ + bcm2835_gpio_fsel(RPI_GPIO_P1_11, BCM2835_GPIO_FSEL_OUTP); + /* Set RPI pin P1-15 to be an input */ + bcm2835_gpio_fsel(RPI_GPIO_P1_15, BCM2835_GPIO_FSEL_INPT); + /* with a pullup */ + bcm2835_gpio_set_pud(RPI_GPIO_P1_15, BCM2835_GPIO_PUD_UP); + /* And a low detect enable */ + bcm2835_gpio_len(RPI_GPIO_P1_15); + /* and input hysteresis disabled on GPIOs 0 to 27 */ + bcm2835_gpio_set_pad(BCM2835_PAD_GROUP_GPIO_0_27, BCM2835_PAD_SLEW_RATE_UNLIMITED|BCM2835_PAD_DRIVE_8mA); + +#if 1 + /* Blink */ + while (1) + { + /* Turn it on */ + bcm2835_gpio_write(RPI_GPIO_P1_11, HIGH); + + /* wait a bit */ + bcm2835_delay(500); + + /* turn it off */ + bcm2835_gpio_write(RPI_GPIO_P1_11, LOW); + + /* wait a bit */ + bcm2835_delay(500); + } +#endif + +#if 0 + /* Read input */ + while (1) + { + /* Read some data */ + uint8_t value = bcm2835_gpio_lev(RPI_GPIO_P1_15); + printf("read from pin 15: %d\n", value); + + /* wait a bit */ + bcm2835_delay(500); + } +#endif + +#if 0 + /* Look for a low event detection + // eds will be set whenever pin 15 goes low + */ + while (1) + { + if (bcm2835_gpio_eds(RPI_GPIO_P1_15)) + { + /* Now clear the eds flag by setting it to 1 */ + bcm2835_gpio_set_eds(RPI_GPIO_P1_15); + printf("low event detect for pin 15\n"); + } + + /* wait a bit */ + bcm2835_delay(500); + } +#endif + + if (!bcm2835_close()) + return 1; + + return 0; +} +#endif + + diff --git a/rootfs/usr/share/d3m0n/src/lib/bcm2835.h b/rootfs/usr/share/d3m0n/src/lib/bcm2835.h new file mode 100644 index 00000000..cb7eda84 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/lib/bcm2835.h @@ -0,0 +1,1894 @@ +#pragma once +/* bcm2835.h + + C and C++ support for Broadcom BCM 2835 as used in Raspberry Pi + + Author: Mike McCauley + Copyright (C) 2011-2013 Mike McCauley + $Id: bcm2835.h,v 1.23 2018/01/16 21:55:07 mikem Exp mikem $ +*/ + +/*! \mainpage C library for Broadcom BCM 2835 as used in Raspberry Pi + + This is a C library for Raspberry Pi (RPi). It provides access to + GPIO and other IO functions on the Broadcom BCM 2835 chip, as used in the RaspberryPi, + allowing access to the GPIO pins on the + 26 pin IDE plug on the RPi board so you can control and interface with various external devices. + + It provides functions for reading digital inputs and setting digital outputs, using SPI and I2C, + and for accessing the system timers. + Pin event detection is supported by polling (interrupts are not supported). + + It is C++ compatible, and installs as a header file and non-shared library on + any Linux-based distro (but clearly is no use except on Raspberry Pi or another board with + BCM 2835). + + The version of the package that this documentation refers to can be downloaded + from http://www.airspayce.com/mikem/bcm2835/bcm2835-1.55.tar.gz + You can find the latest version at http://www.airspayce.com/mikem/bcm2835 + + Several example programs are provided. + + Based on data in http://elinux.org/RPi_Low-level_peripherals and + http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf + and http://www.scribd.com/doc/101830961/GPIO-Pads-Control2 + + You can also find online help and discussion at http://groups.google.com/group/bcm2835 + Please use that group for all questions and discussions on this topic. + Do not contact the author directly, unless it is to discuss commercial licensing. + Before asking a question or reporting a bug, please read + - http://en.wikipedia.org/wiki/Wikipedia:Reference_desk/How_to_ask_a_software_question + - http://www.catb.org/esr/faqs/smart-questions.html + - http://www.chiark.greenend.org.uk/~shgtatham/bugs.html + + Tested on debian6-19-04-2012, 2012-07-15-wheezy-raspbian, 2013-07-26-wheezy-raspbian + and Occidentalisv01, 2016-02-09 Raspbian Jessie. + CAUTION: it has been observed that when detect enables such as bcm2835_gpio_len() + are used and the pin is pulled LOW + it can cause temporary hangs on 2012-07-15-wheezy-raspbian, 2013-07-26-wheezy-raspbian + and Occidentalisv01. + Reason for this is not yet determined, but we suspect that an interrupt handler is + hitting a hard loop on those OSs. + If you must use bcm2835_gpio_len() and friends, make sure you disable the pins with + bcm2835_gpio_clr_len() and friends after use. + + \par Running as root + + Prior to the release of Raspbian Jessie in Feb 2016, access to any + peripheral device via /dev/mem on the RPi required the process to + run as root. Raspbian Jessie permits non-root users to access the + GPIO peripheral (only) via /dev/gpiomem, and this library supports + that limited mode of operation. + + If the library runs with effective UID of 0 (ie root), then + bcm2835_init() will attempt to open /dev/mem, and, if successful, it + will permit use of all peripherals and library functions. + + If the library runs with any other effective UID (ie not root), then + bcm2835_init() will attempt to open /dev/gpiomem, and, if + successful, will only permit GPIO operations. In particular, + bcm2835_spi_begin() and bcm2835_i2c_begin() will return false and all + other non-gpio operations may fail silently or crash. + + \par Installation + + This library consists of a single non-shared library and header file, which will be + installed in the usual places by make install + + \code + # download the latest version of the library, say bcm2835-1.xx.tar.gz, then: + tar zxvf bcm2835-1.xx.tar.gz + cd bcm2835-1.xx + ./configure + make + sudo make check + sudo make install + \endcode + + \par Physical Addresses + + The functions bcm2835_peri_read(), bcm2835_peri_write() and bcm2835_peri_set_bits() + are low level peripheral register access functions. They are designed to use + physical addresses as described in section 1.2.3 ARM physical addresses + of the BCM2835 ARM Peripherals manual. + Physical addresses range from 0x20000000 to 0x20FFFFFF for peripherals. The bus + addresses for peripherals are set up to map onto the peripheral bus address range starting at + 0x7E000000. Thus a peripheral advertised in the manual at bus address 0x7Ennnnnn is available at + physical address 0x20nnnnnn. + + On RPI 2, the peripheral addresses are different and the bcm2835 library gets them + from reading /proc/device-tree/soc/ranges. This is only availble with recent versions of the kernel on RPI 2. + + After initialisation, the base address of the various peripheral + registers are available with the following + externals: + bcm2835_gpio + bcm2835_pwm + bcm2835_clk + bcm2835_pads + bcm2835_spio0 + bcm2835_st + bcm2835_bsc0 + bcm2835_bsc1 + bcm2835_aux + bcm2835_spi1 + + \par Raspberry Pi 2 (RPI2) + + For this library to work correctly on RPI2, you MUST have the device tree support enabled in the kernel. + You should also ensure you are using the latest version of Linux. The library has been tested on RPI2 + with 2015-02-16-raspbian-wheezy and ArchLinuxARM-rpi-2 as of 2015-03-29. + + When device tree suport is enabled, the file /proc/device-tree/soc/ranges will appear in the file system, + and the bcm2835 module relies on its presence to correctly run on RPI2 (it is optional for RPI1). + Without device tree support enabled and the presence of this file, it will not work on RPI2. + + To enable device tree support: + + \code + sudo raspi-config + under Advanced Options - enable Device Tree + Reboot. + \endcode + + \par Pin Numbering + + The GPIO pin numbering as used by RPi is different to and inconsistent with the underlying + BCM 2835 chip pin numbering. http://elinux.org/RPi_BCM2835_GPIOs + + RPi has a 26 pin IDE header that provides access to some of the GPIO pins on the BCM 2835, + as well as power and ground pins. Not all GPIO pins on the BCM 2835 are available on the + IDE header. + + RPi Version 2 also has a P5 connector with 4 GPIO pins, 5V, 3.3V and Gnd. + + The functions in this library are designed to be passed the BCM 2835 GPIO pin number and _not_ + the RPi pin number. There are symbolic definitions for each of the available pins + that you should use for convenience. See \ref RPiGPIOPin. + + \par SPI Pins + + The bcm2835_spi_* functions allow you to control the BCM 2835 SPI0 interface, + allowing you to send and received data by SPI (Serial Peripheral Interface). + For more information about SPI, see http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus + + When bcm2835_spi_begin() is called it changes the bahaviour of the SPI interface pins from their + default GPIO behaviour in order to support SPI. While SPI is in use, you will not be able + to control the state of the SPI pins through the usual bcm2835_spi_gpio_write(). + When bcm2835_spi_end() is called, the SPI pins will all revert to inputs, and can then be + configured and controled with the usual bcm2835_gpio_* calls. + + The Raspberry Pi GPIO pins used for SPI are: + + - P1-19 (MOSI) + - P1-21 (MISO) + - P1-23 (CLK) + - P1-24 (CE0) + - P1-26 (CE1) + + Although it is possible to select high speeds for the SPI interface, up to 125MHz (see bcm2835_spi_setClockDivider()) + you should not expect to actually achieve those sorts of speeds with the RPi wiring. Our tests on RPi 2 show that the + SPI CLK line when unloaded has a resonant frequency of about 40MHz, and when loaded, the MOSI and MISO lines + ring at an even lower frequency. Measurements show that SPI waveforms are very poor and unusable at 62 and 125MHz. + Dont expect any speed faster than 31MHz to work reliably. + + The bcm2835_aux_spi_* functions allow you to control the BCM 2835 SPI1 interface, + allowing you to send and received data by SPI (Serial Peripheral Interface). + + The Raspberry Pi GPIO pins used for AUX SPI (SPI1) are: + + - P1-38 (MOSI) + - P1-35 (MISO) + - P1-40 (CLK) + - P1-36 (CE2) + + \par I2C Pins + + The bcm2835_i2c_* functions allow you to control the BCM 2835 BSC interface, + allowing you to send and received data by I2C ("eye-squared cee"; generically referred to as "two-wire interface") . + For more information about I?C, see http://en.wikipedia.org/wiki/I%C2%B2C + + The Raspberry Pi V2 GPIO pins used for I2C are: + + - P1-03 (SDA) + - P1-05 (SLC) + + \par PWM + + The BCM2835 supports hardware PWM on a limited subset of GPIO pins. This bcm2835 library provides + functions for configuring and controlling PWM output on these pins. + + The BCM2835 contains 2 independent PWM channels (0 and 1), each of which be connnected to a limited subset of + GPIO pins. The following GPIO pins may be connected to the following PWM channels (from section 9.5): + \code + GPIO PIN RPi pin PWM Channel ALT FUN + 12 0 0 + 13 1 0 + 18 1-12 0 5 + 19 1 5 + 40 0 0 + 41 1 0 + 45 1 0 + 52 0 1 + 53 1 1 + \endcode + In order for a GPIO pin to emit output from its PWM channel, it must be set to the Alt Function given above. + Note carefully that current versions of the Raspberry Pi only expose one of these pins (GPIO 18 = RPi Pin 1-12) + on the IO headers, and therefore this is the only IO pin on the RPi that can be used for PWM. + Further it must be set to ALT FUN 5 to get PWM output. + + Both PWM channels are driven by the same PWM clock, whose clock dvider can be varied using + bcm2835_pwm_set_clock(). Each channel can be separately enabled with bcm2835_pwm_set_mode(). + The average output of the PWM channel is determined by the ratio of DATA/RANGE for that channel. + Use bcm2835_pwm_set_range() to set the range and bcm2835_pwm_set_data() to set the data in that ratio + + Each PWM channel can run in either Balanced or Mark-Space mode. In Balanced mode, the hardware + sends a combination of clock pulses that results in an overall DATA pulses per RANGE pulses. + In Mark-Space mode, the hardware sets the output HIGH for DATA clock pulses wide, followed by + LOW for RANGE-DATA clock pulses. + + The PWM clock can be set to control the PWM pulse widths. The PWM clock is derived from + a 19.2MHz clock. You can set any divider, but some common ones are provided by the BCM2835_PWM_CLOCK_DIVIDER_* + values of \ref bcm2835PWMClockDivider. + + For example, say you wanted to drive a DC motor with PWM at about 1kHz, + and control the speed in 1/1024 increments from + 0/1024 (stopped) through to 1024/1024 (full on). In that case you might set the + clock divider to be 16, and the RANGE to 1024. The pulse repetition frequency will be + 1.2MHz/1024 = 1171.875Hz. + + \par Interactions with other systems + + In order for bcm2835 library SPI to work, you may need to disable the SPI kernel module using: + + \code + sudo raspi-config + under Advanced Options - enable Device Tree + under Advanced Options - disable SPI + Reboot. + \endcode + + Since bcm2835 accesses the lowest level hardware interfaces (in eh intererests of speed and flexibility) + there can be intercations with other low level software trying to do similar things. + + It seems that with "latest" 8.0 Jessie 4.9.24-v7+ kernel PWM just won't + work unless you disable audio. There's a line + \code + dtparam=audio=on + \endcode + in the /boot/config.txt. + Comment it out like this: + \code + #dtparam=audio=on + \endcode + + \par Real Time performance constraints + + The bcm2835 is a library for user programs (i.e. they run in 'userland'). + Such programs are not part of the kernel and are usually + subject to paging and swapping by the kernel while it does other things besides running your program. + This means that you should not expect to get real-time performance or + real-time timing constraints from such programs. In particular, there is no guarantee that the + bcm2835_delay() and bcm2835_delayMicroseconds() will return after exactly the time requested. + In fact, depending on other activity on the host, IO etc, you might get significantly longer delay times + than the one you asked for. So please dont expect to get exactly the time delay you request. + + Arjan reports that you can prevent swapping on Linux with the following code fragment: + + \code + #define + #define + + struct sched_param sp; + memset(&sp, 0, sizeof(sp)); + sp.sched_priority = sched_get_priority_max(SCHED_FIFO); + sched_setscheduler(0, SCHED_FIFO, &sp); + mlockall(MCL_CURRENT | MCL_FUTURE); + \endcode + + \par Bindings to other languages + + mikem has made Perl bindings available at CPAN: + http://search.cpan.org/~mikem/Device-BCM2835-1.9/lib/Device/BCM2835.pm + Matthew Baker has kindly made Python bindings available at: + https: github.com/mubeta06/py-libbcm2835 + Gary Marks has created a Serial Peripheral Interface (SPI) command-line utility + for Raspberry Pi, based on the bcm2835 library. The + utility, spincl, is licensed under Open Source GNU GPLv3 by iP Solutions (http://ipsolutionscorp.com), as a + free download with source included: http://ipsolutionscorp.com/raspberry-pi-spi-utility/ + + \par Open Source Licensing GPL V2 + + This is the appropriate option if you want to share the source code of your + application with everyone you distribute it to, and you also want to give them + the right to share who uses it. If you wish to use this software under Open + Source Licensing, you must contribute all your source code to the open source + community in accordance with the GPL Version 2 when your application is + distributed. See https://www.gnu.org/licenses/gpl-2.0.html and COPYING + + \par Commercial Licensing + + This is the appropriate option if you are creating proprietary applications + and you are not prepared to distribute and share the source code of your + application. Purchase commercial licenses at http://airspayce.binpress.com + + \par Acknowledgements + + Some of this code has been inspired by Dom and Gert. + The I2C code has been inspired by Alan Barr. + + \par Revision History + + \version 1.0 Initial release + + \version 1.1 Minor bug fixes + + \version 1.2 Added support for SPI + + \version 1.3 Added bcm2835_spi_transfern() + + \version 1.4 Fixed a problem that prevented SPI CE1 being used. Reported by David Robinson. + + \version 1.5 Added bcm2835_close() to deinit the library. Suggested by C?sar Ortiz + + \version 1.6 Document testing on 2012-07-15-wheezy-raspbian and Occidentalisv01 + Functions bcm2835_gpio_ren(), bcm2835_gpio_fen(), bcm2835_gpio_hen() + bcm2835_gpio_len(), bcm2835_gpio_aren() and bcm2835_gpio_afen() now + changes only the pin specified. Other pins that were already previously + enabled stay enabled. + Added bcm2835_gpio_clr_ren(), bcm2835_gpio_clr_fen(), bcm2835_gpio_clr_hen() + bcm2835_gpio_clr_len(), bcm2835_gpio_clr_aren(), bcm2835_gpio_clr_afen() + to clear the enable for individual pins, suggested by Andreas Sundstrom. + + \version 1.7 Added bcm2835_spi_transfernb to support different buffers for read and write. + + \version 1.8 Improvements to read barrier, as suggested by maddin. + + \version 1.9 Improvements contributed by mikew: + I noticed that it was mallocing memory for the mmaps on /dev/mem. + It's not necessary to do that, you can just mmap the file directly, + so I've removed the mallocs (and frees). + I've also modified delayMicroseconds() to use nanosleep() for long waits, + and a busy wait on a high resolution timer for the rest. This is because + I've found that calling nanosleep() takes at least 100-200 us. + You need to link using '-lrt' using this version. + I've added some unsigned casts to the debug prints to silence compiler + warnings I was getting, fixed some typos, and changed the value of + BCM2835_PAD_HYSTERESIS_ENABLED to 0x08 as per Gert van Loo's doc at + http://www.scribd.com/doc/101830961/GPIO-Pads-Control2 + Also added a define for the passwrd value that Gert says is needed to + change pad control settings. + + \version 1.10 Changed the names of the delay functions to bcm2835_delay() + and bcm2835_delayMicroseconds() to prevent collisions with wiringPi. + Macros to map delay()-> bcm2835_delay() and + Macros to map delayMicroseconds()-> bcm2835_delayMicroseconds(), which + can be disabled by defining BCM2835_NO_DELAY_COMPATIBILITY + + \version 1.11 Fixed incorrect link to download file + + \version 1.12 New GPIO pin definitions for RPi version 2 (which has a different GPIO mapping) + + \version 1.13 New GPIO pin definitions for RPi version 2 plug P5 + Hardware base pointers are now available (after initialisation) externally as bcm2835_gpio + bcm2835_pwm bcm2835_clk bcm2835_pads bcm2835_spi0. + + \version 1.14 Now compiles even if CLOCK_MONOTONIC_RAW is not available, uses CLOCK_MONOTONIC instead. + Fixed errors in documentation of SPI divider frequencies based on 250MHz clock. + Reported by Ben Simpson. + + \version 1.15 Added bcm2835_close() to end of examples as suggested by Mark Wolfe. + + \version 1.16 Added bcm2835_gpio_set_multi, bcm2835_gpio_clr_multi and bcm2835_gpio_write_multi + to allow a mask of pins to be set all at once. Requested by Sebastian Loncar. + + \version 1.17 Added bcm2835_gpio_write_mask. Requested by Sebastian Loncar. + + \version 1.18 Added bcm2835_i2c_* functions. Changes to bcm2835_delayMicroseconds: + now uses the RPi system timer counter, instead of clock_gettime, for improved accuracy. + No need to link with -lrt now. Contributed by Arjan van Vught. + \version 1.19 Removed inlines added by previous patch since they don't seem to work everywhere. + Reported by olly. + + \version 1.20 Patch from Mark Dootson to close /dev/mem after access to the peripherals has been granted. + + \version 1.21 delayMicroseconds is now not susceptible to 32 bit timer overruns. + Patch courtesy Jeremy Mortis. + + \version 1.22 Fixed incorrect definition of BCM2835_GPFEN0 which broke the ability to set + falling edge events. Reported by Mark Dootson. + + \version 1.23 Added bcm2835_i2c_set_baudrate and bcm2835_i2c_read_register_rs. + Improvements to bcm2835_i2c_read and bcm2835_i2c_write functions + to fix ocasional reads not completing. Patched by Mark Dootson. + + \version 1.24 Mark Dootson p[atched a problem with his previously submitted code + under high load from other processes. + + \version 1.25 Updated author and distribution location details to airspayce.com + + \version 1.26 Added missing unmapmem for pads in bcm2835_close to prevent a memory leak. + Reported by Hartmut Henkel. + + \version 1.27 bcm2835_gpio_set_pad() no longer needs BCM2835_PAD_PASSWRD: it is + now automatically included. + Added suport for PWM mode with bcm2835_pwm_* functions. + + \version 1.28 Fixed a problem where bcm2835_spi_writenb() would have problems with transfers of more than + 64 bytes dues to read buffer filling. Patched by Peter Würtz. + + \version 1.29 Further fix to SPI from Peter Würtz. + + \version 1.30 10 microsecond delays from bcm2835_spi_transfer and bcm2835_spi_transfern for + significant performance improvements, Patch by Alan Watson. + + \version 1.31 Fix a GCC warning about dummy variable, patched by Alan Watson. Thanks. + + \version 1.32 Added option I2C_V1 definition to compile for version 1 RPi. + By default I2C code is generated for the V2 RPi which has SDA1 and SCL1 connected. + Contributed by Malcolm Wiles based on work by Arvi Govindaraj. + + \version 1.33 Added command line utilities i2c and gpio to examples. Contributed by Shahrooz Shahparnia. + + \version 1.34 Added bcm2835_i2c_write_read_rs() which writes an arbitrary number of bytes, + sends a repeat start, and reads from the device. Contributed by Eduardo Steinhorst. + + \version 1.35 Fix build errors when compiled under Qt. Also performance improvements with SPI transfers. Contributed b Udo Klaas. + + \version 1.36 Make automake's test runner detect that we're skipping tests when not root, the second + one makes us skip the test when using fakeroot (as used when building + Debian packages). Contributed by Guido Günther. + + \version 1.37 Moved confiure.in to configure.ac as receommnded by autoreconf.
+ Improvements to bcm2835_st_read to account for possible timer overflow, contributed by 'Ed'.
+ Added definitions for Raspberry Pi B+ J8 header GPIO pins.
+ + \version 1.38 Added bcm2835_regbase for the benefit of C# wrappers, patch by Frank Hommers
+ + \version 1.39 Beta version of RPi2 compatibility. Not tested here on RPi2 hardware. + Testers please confirm correct operation on RPi2.
+ Unneccessary 'volatile' qualifiers removed from all variables and signatures.
+ Removed unsupportable PWM dividers, based on a report from Christophe Cecillon.
+ Minor improvements to spi.c example.
+ + \version 1.40 Correct operation on RPi2 has been confirmed.
+ Fixed a number of compiler errors and warnings that occur when bcm2835.h is included + in code compiled with -Wall -Woverflow -Wstrict-overflow -Wshadow -Wextra -pedantic. + Reported by tlhackque.
+ Fixed a problem where calling bcm2835_delayMicroseconds loops forever when debug is set. Reported by tlhackque.
+ Reinstated use of volatile in 2 functions where there was a danger of lost reads or writes. Reported by tlhackque.
+ + \version 1.41 Added BCM2835_VERSION macro and new function bcm2835_version(); Requested by tlhackque.
+ Improvements to peripheral memory barriers as suggested by tlhackque.
+ Reinstated some necessary volatile declarations as requested by tlhackque.
+ + \version 1.42 Further improvements to memory barriers with the patient assistance and patches of tlhackque.
+ + \version 1.43 Fixed problems with compiling barriers on RPI 2 with Arch Linux and gcc 4.9.2. + Reported and patched by Lars Christensen.
+ Testing on RPI 2, with ArchLinuxARM-rpi-2-latest and 2015-02-16-raspbian-wheezy.
+ + \version 1.44 Added documention about the need for device tree to be enabled on RPI2.
+ Improvements to detection of availablity of DMB instruction based on value of __ARM_ARCH macro.
+ + \version 1.45 Fixed an error in the pad group offsets that would prevent bcm2835_gpio_set_pad() + and bcm2835_gpio_pad() working correctly with non-0 pad groups. Reported by Guido. + + \version 1.46 2015-09-18 + Added symbolic definitions for remaining pins on 40 pin GPIO header on RPi 2.
+ + \version 1.47 2015-11-18 + Fixed possibly incorrect reads in bcm2835_i2c_read_register_rs, patch from Eckhardt Ulrich.
+ + \version 1.48 2015-12-08 + Added patch from Eckhardt Ulrich that fixed problems that could cause hanging with bcm2835_i2c_read_register_rs + and others. + + \version 1.49 2016-01-05 + Added patch from Jonathan Perkin with new functions bcm2835_gpio_eds_multi() and bcm2835_gpio_set_eds_multi(). + + \version 1.50 2016-02-28 + Added support for running as non-root, permitting access to GPIO only. Functions + bcm2835_spi_begin() and bcm2835_i2c_begin() will now return 0 if not running as root + (which prevents access to the SPI and I2C peripherals, amongst others). + Testing on Raspbian Jessie. + + \version 1.51 2016-11-03 + Added documentation about SPI clock divider and resulting SPI speeds on RPi3. + Fixed a problem where seg fault could occur in bcm2835_delayMicroseconds() if not running as root. Patch from Pok. + + \version 1.52 2017-02-03 + Added link to commercial license purchasing. + + \version 1.53 2018-01-14 + Added support for AUX SPI (SPI1) + Contributed by Arjan van Vught (http://www.raspberrypi-dmx.org/) + + \version 1.54 2018-01-17 + Fixed compile errors in new AUX spi code under some circumstances. + + \version 1.55 2018-01-20 + Fixed version numbers. + Fixed some warnings. + + \author Mike McCauley (mikem@airspayce.com) DO NOT CONTACT THE AUTHOR DIRECTLY: USE THE LISTS +*/ + + +/* Defines for BCM2835 */ +#ifndef BCM2835_H +#define BCM2835_H + +#include + +#define BCM2835_VERSION 10055 /* Version 1.55 */ + +/* RPi 2 is ARM v7, and has DMB instruction for memory barriers. + Older RPis are ARM v6 and don't, so a coprocessor instruction must be used instead. + However, not all versions of gcc in all distros support the dmb assembler instruction even on conmpatible processors. + This test is so any ARMv7 or higher processors with suitable GCC will use DMB. +*/ +#if __ARM_ARCH >= 7 +#define BCM2835_HAVE_DMB +#endif + +/*! \defgroup constants Constants for passing to and from library functions + The values here are designed to be passed to various functions in the bcm2835 library. + @{ +*/ + +/*! This means pin HIGH, true, 3.3volts on a pin. */ +#define HIGH 0x1 +/*! This means pin LOW, false, 0volts on a pin. */ +#define LOW 0x0 + +/*! Return the minimum of 2 numbers */ +#ifndef MIN +#define MIN(a, b) (a < b ? a : b) +#endif + +/*! Speed of the core clock core_clk */ +#define BCM2835_CORE_CLK_HZ 250000000 /*!< 250 MHz */ + +/*! On RPi2 with BCM2836, and all recent OSs, the base of the peripherals is read from a /proc file */ +#define BMC2835_RPI2_DT_FILENAME "/proc/device-tree/soc/ranges" +/*! Offset into BMC2835_RPI2_DT_FILENAME for the peripherals base address */ +#define BMC2835_RPI2_DT_PERI_BASE_ADDRESS_OFFSET 4 +/*! Offset into BMC2835_RPI2_DT_FILENAME for the peripherals size address */ +#define BMC2835_RPI2_DT_PERI_SIZE_OFFSET 8 + +/*! Physical addresses for various peripheral register sets + Base Physical Address of the BCM 2835 peripheral registers + Note this is different for the RPi2 BCM2836, where this is derived from /proc/device-tree/soc/ranges + If /proc/device-tree/soc/ranges exists on a RPi 1 OS, it would be expected to contain the + following numbers: +*/ +/*! Peripherals block base address on RPi 1 */ +#define BCM2835_PERI_BASE 0x20000000 +/*! Size of the peripherals block on RPi 1 */ +#define BCM2835_PERI_SIZE 0x01000000 + +/*! Offsets for the bases of various peripherals within the peripherals block + / Base Address of the System Timer registers +*/ +#define BCM2835_ST_BASE 0x3000 +/*! Base Address of the Pads registers */ +#define BCM2835_GPIO_PADS 0x100000 +/*! Base Address of the Clock/timer registers */ +#define BCM2835_CLOCK_BASE 0x101000 +/*! Base Address of the GPIO registers */ +#define BCM2835_GPIO_BASE 0x200000 +/*! Base Address of the SPI0 registers */ +#define BCM2835_SPI0_BASE 0x204000 +/*! Base Address of the BSC0 registers */ +#define BCM2835_BSC0_BASE 0x205000 +/*! Base Address of the PWM registers */ +#define BCM2835_GPIO_PWM 0x20C000 +/*! Base Address of the AUX registers */ +#define BCM2835_AUX_BASE 0x215000 +/*! Base Address of the AUX_SPI1 registers */ +#define BCM2835_SPI1_BASE 0x215080 +/*! Base Address of the AUX_SPI2 registers */ +#define BCM2835_SPI2_BASE 0x2150C0 +/*! Base Address of the BSC1 registers */ +#define BCM2835_BSC1_BASE 0x804000 + + +/*! Physical address and size of the peripherals block + May be overridden on RPi2 +*/ +extern uint32_t *bcm2835_peripherals_base; +/*! Size of the peripherals block to be mapped */ +extern uint32_t bcm2835_peripherals_size; + +/*! Virtual memory address of the mapped peripherals block */ +extern uint32_t *bcm2835_peripherals; + +/*! Base of the ST (System Timer) registers. + Available after bcm2835_init has been called (as root) +*/ +extern volatile uint32_t *bcm2835_st; + +/*! Base of the GPIO registers. + Available after bcm2835_init has been called +*/ +extern volatile uint32_t *bcm2835_gpio; + +/*! Base of the PWM registers. + Available after bcm2835_init has been called (as root) +*/ +extern volatile uint32_t *bcm2835_pwm; + +/*! Base of the CLK registers. + Available after bcm2835_init has been called (as root) +*/ +extern volatile uint32_t *bcm2835_clk; + +/*! Base of the PADS registers. + Available after bcm2835_init has been called (as root) +*/ +extern volatile uint32_t *bcm2835_pads; + +/*! Base of the SPI0 registers. + Available after bcm2835_init has been called (as root) +*/ +extern volatile uint32_t *bcm2835_spi0; + +/*! Base of the BSC0 registers. + Available after bcm2835_init has been called (as root) +*/ +extern volatile uint32_t *bcm2835_bsc0; + +/*! Base of the BSC1 registers. + Available after bcm2835_init has been called (as root) +*/ +extern volatile uint32_t *bcm2835_bsc1; + +/*! Base of the AUX registers. + Available after bcm2835_init has been called (as root) +*/ +extern volatile uint32_t *bcm2835_aux; + +/*! Base of the SPI1 registers. + Available after bcm2835_init has been called (as root) +*/ +extern volatile uint32_t *bcm2835_spi1; + + +/*! \brief bcm2835RegisterBase + Register bases for bcm2835_regbase() +*/ +typedef enum +{ + BCM2835_REGBASE_ST = 1, /*!< Base of the ST (System Timer) registers. */ + BCM2835_REGBASE_GPIO = 2, /*!< Base of the GPIO registers. */ + BCM2835_REGBASE_PWM = 3, /*!< Base of the PWM registers. */ + BCM2835_REGBASE_CLK = 4, /*!< Base of the CLK registers. */ + BCM2835_REGBASE_PADS = 5, /*!< Base of the PADS registers. */ + BCM2835_REGBASE_SPI0 = 6, /*!< Base of the SPI0 registers. */ + BCM2835_REGBASE_BSC0 = 7, /*!< Base of the BSC0 registers. */ + BCM2835_REGBASE_BSC1 = 8, /*!< Base of the BSC1 registers. */ + BCM2835_REGBASE_AUX = 9, /*!< Base of the AUX registers. */ + BCM2835_REGBASE_SPI1 = 10 /*!< Base of the SPI1 registers. */ +} bcm2835RegisterBase; + +/*! Size of memory page on RPi */ +#define BCM2835_PAGE_SIZE (4*1024) +/*! Size of memory block on RPi */ +#define BCM2835_BLOCK_SIZE (4*1024) + + +/* Defines for GPIO + The BCM2835 has 54 GPIO pins. + BCM2835 data sheet, Page 90 onwards. +*/ +/*! GPIO register offsets from BCM2835_GPIO_BASE. + Offsets into the GPIO Peripheral block in bytes per 6.1 Register View +*/ +#define BCM2835_GPFSEL0 0x0000 /*!< GPIO Function Select 0 */ +#define BCM2835_GPFSEL1 0x0004 /*!< GPIO Function Select 1 */ +#define BCM2835_GPFSEL2 0x0008 /*!< GPIO Function Select 2 */ +#define BCM2835_GPFSEL3 0x000c /*!< GPIO Function Select 3 */ +#define BCM2835_GPFSEL4 0x0010 /*!< GPIO Function Select 4 */ +#define BCM2835_GPFSEL5 0x0014 /*!< GPIO Function Select 5 */ +#define BCM2835_GPSET0 0x001c /*!< GPIO Pin Output Set 0 */ +#define BCM2835_GPSET1 0x0020 /*!< GPIO Pin Output Set 1 */ +#define BCM2835_GPCLR0 0x0028 /*!< GPIO Pin Output Clear 0 */ +#define BCM2835_GPCLR1 0x002c /*!< GPIO Pin Output Clear 1 */ +#define BCM2835_GPLEV0 0x0034 /*!< GPIO Pin Level 0 */ +#define BCM2835_GPLEV1 0x0038 /*!< GPIO Pin Level 1 */ +#define BCM2835_GPEDS0 0x0040 /*!< GPIO Pin Event Detect Status 0 */ +#define BCM2835_GPEDS1 0x0044 /*!< GPIO Pin Event Detect Status 1 */ +#define BCM2835_GPREN0 0x004c /*!< GPIO Pin Rising Edge Detect Enable 0 */ +#define BCM2835_GPREN1 0x0050 /*!< GPIO Pin Rising Edge Detect Enable 1 */ +#define BCM2835_GPFEN0 0x0058 /*!< GPIO Pin Falling Edge Detect Enable 0 */ +#define BCM2835_GPFEN1 0x005c /*!< GPIO Pin Falling Edge Detect Enable 1 */ +#define BCM2835_GPHEN0 0x0064 /*!< GPIO Pin High Detect Enable 0 */ +#define BCM2835_GPHEN1 0x0068 /*!< GPIO Pin High Detect Enable 1 */ +#define BCM2835_GPLEN0 0x0070 /*!< GPIO Pin Low Detect Enable 0 */ +#define BCM2835_GPLEN1 0x0074 /*!< GPIO Pin Low Detect Enable 1 */ +#define BCM2835_GPAREN0 0x007c /*!< GPIO Pin Async. Rising Edge Detect 0 */ +#define BCM2835_GPAREN1 0x0080 /*!< GPIO Pin Async. Rising Edge Detect 1 */ +#define BCM2835_GPAFEN0 0x0088 /*!< GPIO Pin Async. Falling Edge Detect 0 */ +#define BCM2835_GPAFEN1 0x008c /*!< GPIO Pin Async. Falling Edge Detect 1 */ +#define BCM2835_GPPUD 0x0094 /*!< GPIO Pin Pull-up/down Enable */ +#define BCM2835_GPPUDCLK0 0x0098 /*!< GPIO Pin Pull-up/down Enable Clock 0 */ +#define BCM2835_GPPUDCLK1 0x009c /*!< GPIO Pin Pull-up/down Enable Clock 1 */ + +/*! \brief bcm2835PortFunction + Port function select modes for bcm2835_gpio_fsel() +*/ +typedef enum +{ + BCM2835_GPIO_FSEL_INPT = 0x00, /*!< Input 0b000 */ + BCM2835_GPIO_FSEL_OUTP = 0x01, /*!< Output 0b001 */ + BCM2835_GPIO_FSEL_ALT0 = 0x04, /*!< Alternate function 0 0b100 */ + BCM2835_GPIO_FSEL_ALT1 = 0x05, /*!< Alternate function 1 0b101 */ + BCM2835_GPIO_FSEL_ALT2 = 0x06, /*!< Alternate function 2 0b110, */ + BCM2835_GPIO_FSEL_ALT3 = 0x07, /*!< Alternate function 3 0b111 */ + BCM2835_GPIO_FSEL_ALT4 = 0x03, /*!< Alternate function 4 0b011 */ + BCM2835_GPIO_FSEL_ALT5 = 0x02, /*!< Alternate function 5 0b010 */ + BCM2835_GPIO_FSEL_MASK = 0x07 /*!< Function select bits mask 0b111 */ +} bcm2835FunctionSelect; + +/*! \brief bcm2835PUDControl + Pullup/Pulldown defines for bcm2835_gpio_pud() +*/ +typedef enum +{ + BCM2835_GPIO_PUD_OFF = 0x00, /*!< Off ? disable pull-up/down 0b00 */ + BCM2835_GPIO_PUD_DOWN = 0x01, /*!< Enable Pull Down control 0b01 */ + BCM2835_GPIO_PUD_UP = 0x02 /*!< Enable Pull Up control 0b10 */ +} bcm2835PUDControl; + +/*! Pad control register offsets from BCM2835_GPIO_PADS */ +#define BCM2835_PADS_GPIO_0_27 0x002c /*!< Pad control register for pads 0 to 27 */ +#define BCM2835_PADS_GPIO_28_45 0x0030 /*!< Pad control register for pads 28 to 45 */ +#define BCM2835_PADS_GPIO_46_53 0x0034 /*!< Pad control register for pads 46 to 53 */ + +/*! Pad Control masks */ +#define BCM2835_PAD_PASSWRD (0x5A << 24) /*!< Password to enable setting pad mask */ +#define BCM2835_PAD_SLEW_RATE_UNLIMITED 0x10 /*!< Slew rate unlimited */ +#define BCM2835_PAD_HYSTERESIS_ENABLED 0x08 /*!< Hysteresis enabled */ +#define BCM2835_PAD_DRIVE_2mA 0x00 /*!< 2mA drive current */ +#define BCM2835_PAD_DRIVE_4mA 0x01 /*!< 4mA drive current */ +#define BCM2835_PAD_DRIVE_6mA 0x02 /*!< 6mA drive current */ +#define BCM2835_PAD_DRIVE_8mA 0x03 /*!< 8mA drive current */ +#define BCM2835_PAD_DRIVE_10mA 0x04 /*!< 10mA drive current */ +#define BCM2835_PAD_DRIVE_12mA 0x05 /*!< 12mA drive current */ +#define BCM2835_PAD_DRIVE_14mA 0x06 /*!< 14mA drive current */ +#define BCM2835_PAD_DRIVE_16mA 0x07 /*!< 16mA drive current */ + +/*! \brief bcm2835PadGroup + Pad group specification for bcm2835_gpio_pad() +*/ +typedef enum +{ + BCM2835_PAD_GROUP_GPIO_0_27 = 0, /*!< Pad group for GPIO pads 0 to 27 */ + BCM2835_PAD_GROUP_GPIO_28_45 = 1, /*!< Pad group for GPIO pads 28 to 45 */ + BCM2835_PAD_GROUP_GPIO_46_53 = 2 /*!< Pad group for GPIO pads 46 to 53 */ +} bcm2835PadGroup; + +/*! \brief GPIO Pin Numbers + + Here we define Raspberry Pin GPIO pins on P1 in terms of the underlying BCM GPIO pin numbers. + These can be passed as a pin number to any function requiring a pin. + Not all pins on the RPi 26 bin IDE plug are connected to GPIO pins + and some can adopt an alternate function. + RPi version 2 has some slightly different pinouts, and these are values RPI_V2_*. + RPi B+ has yet differnet pinouts and these are defined in RPI_BPLUS_*. + At bootup, pins 8 and 10 are set to UART0_TXD, UART0_RXD (ie the alt0 function) respectively + When SPI0 is in use (ie after bcm2835_spi_begin()), SPI0 pins are dedicated to SPI + and cant be controlled independently. + If you are using the RPi Compute Module, just use the GPIO number: there is no need to use one of these + symbolic names +*/ +typedef enum +{ + RPI_GPIO_P1_03 = 0, /*!< Version 1, Pin P1-03 */ + RPI_GPIO_P1_05 = 1, /*!< Version 1, Pin P1-05 */ + RPI_GPIO_P1_07 = 4, /*!< Version 1, Pin P1-07 */ + RPI_GPIO_P1_08 = 14, /*!< Version 1, Pin P1-08, defaults to alt function 0 UART0_TXD */ + RPI_GPIO_P1_10 = 15, /*!< Version 1, Pin P1-10, defaults to alt function 0 UART0_RXD */ + RPI_GPIO_P1_11 = 17, /*!< Version 1, Pin P1-11 */ + RPI_GPIO_P1_12 = 18, /*!< Version 1, Pin P1-12, can be PWM channel 0 in ALT FUN 5 */ + RPI_GPIO_P1_13 = 21, /*!< Version 1, Pin P1-13 */ + RPI_GPIO_P1_15 = 22, /*!< Version 1, Pin P1-15 */ + RPI_GPIO_P1_16 = 23, /*!< Version 1, Pin P1-16 */ + RPI_GPIO_P1_18 = 24, /*!< Version 1, Pin P1-18 */ + RPI_GPIO_P1_19 = 10, /*!< Version 1, Pin P1-19, MOSI when SPI0 in use */ + RPI_GPIO_P1_21 = 9, /*!< Version 1, Pin P1-21, MISO when SPI0 in use */ + RPI_GPIO_P1_22 = 25, /*!< Version 1, Pin P1-22 */ + RPI_GPIO_P1_23 = 11, /*!< Version 1, Pin P1-23, CLK when SPI0 in use */ + RPI_GPIO_P1_24 = 8, /*!< Version 1, Pin P1-24, CE0 when SPI0 in use */ + RPI_GPIO_P1_26 = 7, /*!< Version 1, Pin P1-26, CE1 when SPI0 in use */ + + /* RPi Version 2 */ + RPI_V2_GPIO_P1_03 = 2, /*!< Version 2, Pin P1-03 */ + RPI_V2_GPIO_P1_05 = 3, /*!< Version 2, Pin P1-05 */ + RPI_V2_GPIO_P1_07 = 4, /*!< Version 2, Pin P1-07 */ + RPI_V2_GPIO_P1_08 = 14, /*!< Version 2, Pin P1-08, defaults to alt function 0 UART0_TXD */ + RPI_V2_GPIO_P1_10 = 15, /*!< Version 2, Pin P1-10, defaults to alt function 0 UART0_RXD */ + RPI_V2_GPIO_P1_11 = 17, /*!< Version 2, Pin P1-11 */ + RPI_V2_GPIO_P1_12 = 18, /*!< Version 2, Pin P1-12, can be PWM channel 0 in ALT FUN 5 */ + RPI_V2_GPIO_P1_13 = 27, /*!< Version 2, Pin P1-13 */ + RPI_V2_GPIO_P1_15 = 22, /*!< Version 2, Pin P1-15 */ + RPI_V2_GPIO_P1_16 = 23, /*!< Version 2, Pin P1-16 */ + RPI_V2_GPIO_P1_18 = 24, /*!< Version 2, Pin P1-18 */ + RPI_V2_GPIO_P1_19 = 10, /*!< Version 2, Pin P1-19, MOSI when SPI0 in use */ + RPI_V2_GPIO_P1_21 = 9, /*!< Version 2, Pin P1-21, MISO when SPI0 in use */ + RPI_V2_GPIO_P1_22 = 25, /*!< Version 2, Pin P1-22 */ + RPI_V2_GPIO_P1_23 = 11, /*!< Version 2, Pin P1-23, CLK when SPI0 in use */ + RPI_V2_GPIO_P1_24 = 8, /*!< Version 2, Pin P1-24, CE0 when SPI0 in use */ + RPI_V2_GPIO_P1_26 = 7, /*!< Version 2, Pin P1-26, CE1 when SPI0 in use */ + RPI_V2_GPIO_P1_29 = 5, /*!< Version 2, Pin P1-29 */ + RPI_V2_GPIO_P1_31 = 6, /*!< Version 2, Pin P1-31 */ + RPI_V2_GPIO_P1_32 = 12, /*!< Version 2, Pin P1-32 */ + RPI_V2_GPIO_P1_33 = 13, /*!< Version 2, Pin P1-33 */ + RPI_V2_GPIO_P1_35 = 19, /*!< Version 2, Pin P1-35, can be PWM channel 1 in ALT FUN 5 */ + RPI_V2_GPIO_P1_36 = 16, /*!< Version 2, Pin P1-36 */ + RPI_V2_GPIO_P1_37 = 26, /*!< Version 2, Pin P1-37 */ + RPI_V2_GPIO_P1_38 = 20, /*!< Version 2, Pin P1-38 */ + RPI_V2_GPIO_P1_40 = 21, /*!< Version 2, Pin P1-40 */ + + /* RPi Version 2, new plug P5 */ + RPI_V2_GPIO_P5_03 = 28, /*!< Version 2, Pin P5-03 */ + RPI_V2_GPIO_P5_04 = 29, /*!< Version 2, Pin P5-04 */ + RPI_V2_GPIO_P5_05 = 30, /*!< Version 2, Pin P5-05 */ + RPI_V2_GPIO_P5_06 = 31, /*!< Version 2, Pin P5-06 */ + + /* RPi B+ J8 header, also RPi 2 40 pin GPIO header */ + RPI_BPLUS_GPIO_J8_03 = 2, /*!< B+, Pin J8-03 */ + RPI_BPLUS_GPIO_J8_05 = 3, /*!< B+, Pin J8-05 */ + RPI_BPLUS_GPIO_J8_07 = 4, /*!< B+, Pin J8-07 */ + RPI_BPLUS_GPIO_J8_08 = 14, /*!< B+, Pin J8-08, defaults to alt function 0 UART0_TXD */ + RPI_BPLUS_GPIO_J8_10 = 15, /*!< B+, Pin J8-10, defaults to alt function 0 UART0_RXD */ + RPI_BPLUS_GPIO_J8_11 = 17, /*!< B+, Pin J8-11 */ + RPI_BPLUS_GPIO_J8_12 = 18, /*!< B+, Pin J8-12, can be PWM channel 0 in ALT FUN 5 */ + RPI_BPLUS_GPIO_J8_13 = 27, /*!< B+, Pin J8-13 */ + RPI_BPLUS_GPIO_J8_15 = 22, /*!< B+, Pin J8-15 */ + RPI_BPLUS_GPIO_J8_16 = 23, /*!< B+, Pin J8-16 */ + RPI_BPLUS_GPIO_J8_18 = 24, /*!< B+, Pin J8-18 */ + RPI_BPLUS_GPIO_J8_19 = 10, /*!< B+, Pin J8-19, MOSI when SPI0 in use */ + RPI_BPLUS_GPIO_J8_21 = 9, /*!< B+, Pin J8-21, MISO when SPI0 in use */ + RPI_BPLUS_GPIO_J8_22 = 25, /*!< B+, Pin J8-22 */ + RPI_BPLUS_GPIO_J8_23 = 11, /*!< B+, Pin J8-23, CLK when SPI0 in use */ + RPI_BPLUS_GPIO_J8_24 = 8, /*!< B+, Pin J8-24, CE0 when SPI0 in use */ + RPI_BPLUS_GPIO_J8_26 = 7, /*!< B+, Pin J8-26, CE1 when SPI0 in use */ + RPI_BPLUS_GPIO_J8_29 = 5, /*!< B+, Pin J8-29, */ + RPI_BPLUS_GPIO_J8_31 = 6, /*!< B+, Pin J8-31, */ + RPI_BPLUS_GPIO_J8_32 = 12, /*!< B+, Pin J8-32, */ + RPI_BPLUS_GPIO_J8_33 = 13, /*!< B+, Pin J8-33, */ + RPI_BPLUS_GPIO_J8_35 = 19, /*!< B+, Pin J8-35, can be PWM channel 1 in ALT FUN 5 */ + RPI_BPLUS_GPIO_J8_36 = 16, /*!< B+, Pin J8-36, */ + RPI_BPLUS_GPIO_J8_37 = 26, /*!< B+, Pin J8-37, */ + RPI_BPLUS_GPIO_J8_38 = 20, /*!< B+, Pin J8-38, */ + RPI_BPLUS_GPIO_J8_40 = 21 /*!< B+, Pin J8-40, */ +} RPiGPIOPin; + +/* Defines for AUX + GPIO register offsets from BCM2835_AUX_BASE. +*/ +#define BCM2835_AUX_IRQ 0x0000 /*! xxx */ +#define BCM2835_AUX_ENABLE 0x0004 /*! */ + +#define BCM2835_AUX_ENABLE_UART1 0x01 /*!< */ +#define BCM2835_AUX_ENABLE_SPI0 0x02 /*!< SPI0 (SPI1 in the device) */ +#define BCM2835_AUX_ENABLE_SPI1 0x04 /*!< SPI1 (SPI2 in the device) */ + + +#define BCM2835_AUX_SPI_CNTL0 0x0000 /*!< */ +#define BCM2835_AUX_SPI_CNTL1 0x0004 /*!< */ +#define BCM2835_AUX_SPI_STAT 0x0008 /*!< */ +#define BCM2835_AUX_SPI_PEEK 0x000C /*!< Read but do not take from FF */ +#define BCM2835_AUX_SPI_IO 0x0020 /*!< Write = TX, read=RX */ +#define BCM2835_AUX_SPI_TXHOLD 0x0030 /*!< Write = TX keep CS, read=RX */ + +#define BCM2835_AUX_SPI_CLOCK_MIN 30500 /*!< 30,5kHz */ +#define BCM2835_AUX_SPI_CLOCK_MAX 125000000 /*!< 125Mhz */ + +#define BCM2835_AUX_SPI_CNTL0_SPEED 0xFFF00000 /*! */ +#define BCM2835_AUX_SPI_CNTL0_SPEED_MAX 0xFFF /*! */ +#define BCM2835_AUX_SPI_CNTL0_SPEED_SHIFT 20 /*! */ + +#define BCM2835_AUX_SPI_CNTL0_CS0_N 0x000C0000 /*!< CS 0 low */ +#define BCM2835_AUX_SPI_CNTL0_CS1_N 0x000A0000 /*!< CS 1 low */ +#define BCM2835_AUX_SPI_CNTL0_CS2_N 0x00060000 /*!< CS 2 low */ + +#define BCM2835_AUX_SPI_CNTL0_POSTINPUT 0x00010000 /*! */ +#define BCM2835_AUX_SPI_CNTL0_VAR_CS 0x00008000 /*! */ +#define BCM2835_AUX_SPI_CNTL0_VAR_WIDTH 0x00004000 /*! */ +#define BCM2835_AUX_SPI_CNTL0_DOUTHOLD 0x00003000 /*! */ +#define BCM2835_AUX_SPI_CNTL0_ENABLE 0x00000800 /*! */ +#define BCM2835_AUX_SPI_CNTL0_CPHA_IN 0x00000400 /*! */ +#define BCM2835_AUX_SPI_CNTL0_CLEARFIFO 0x00000200 /*! */ +#define BCM2835_AUX_SPI_CNTL0_CPHA_OUT 0x00000100 /*! */ +#define BCM2835_AUX_SPI_CNTL0_CPOL 0x00000080 /*! */ +#define BCM2835_AUX_SPI_CNTL0_MSBF_OUT 0x00000040 /*! */ +#define BCM2835_AUX_SPI_CNTL0_SHIFTLEN 0x0000003F /*! */ + +#define BCM2835_AUX_SPI_CNTL1_CSHIGH 0x00000700 /*! */ +#define BCM2835_AUX_SPI_CNTL1_IDLE 0x00000080 /*! */ +#define BCM2835_AUX_SPI_CNTL1_TXEMPTY 0x00000040 /*! */ +#define BCM2835_AUX_SPI_CNTL1_MSBF_IN 0x00000002 /*! */ +#define BCM2835_AUX_SPI_CNTL1_KEEP_IN 0x00000001 /*! */ + +#define BCM2835_AUX_SPI_STAT_TX_LVL 0xFF000000 /*! */ +#define BCM2835_AUX_SPI_STAT_RX_LVL 0x00FF0000 /*! */ +#define BCM2835_AUX_SPI_STAT_TX_FULL 0x00000400 /*! */ +#define BCM2835_AUX_SPI_STAT_TX_EMPTY 0x00000200 /*! */ +#define BCM2835_AUX_SPI_STAT_RX_FULL 0x00000100 /*! */ +#define BCM2835_AUX_SPI_STAT_RX_EMPTY 0x00000080 /*! */ +#define BCM2835_AUX_SPI_STAT_BUSY 0x00000040 /*! */ +#define BCM2835_AUX_SPI_STAT_BITCOUNT 0x0000003F /*! */ + +/* Defines for SPI + GPIO register offsets from BCM2835_SPI0_BASE. + Offsets into the SPI Peripheral block in bytes per 10.5 SPI Register Map +*/ +#define BCM2835_SPI0_CS 0x0000 /*!< SPI Master Control and Status */ +#define BCM2835_SPI0_FIFO 0x0004 /*!< SPI Master TX and RX FIFOs */ +#define BCM2835_SPI0_CLK 0x0008 /*!< SPI Master Clock Divider */ +#define BCM2835_SPI0_DLEN 0x000c /*!< SPI Master Data Length */ +#define BCM2835_SPI0_LTOH 0x0010 /*!< SPI LOSSI mode TOH */ +#define BCM2835_SPI0_DC 0x0014 /*!< SPI DMA DREQ Controls */ + +/* Register masks for SPI0_CS */ +#define BCM2835_SPI0_CS_LEN_LONG 0x02000000 /*!< Enable Long data word in Lossi mode if DMA_LEN is set */ +#define BCM2835_SPI0_CS_DMA_LEN 0x01000000 /*!< Enable DMA mode in Lossi mode */ +#define BCM2835_SPI0_CS_CSPOL2 0x00800000 /*!< Chip Select 2 Polarity */ +#define BCM2835_SPI0_CS_CSPOL1 0x00400000 /*!< Chip Select 1 Polarity */ +#define BCM2835_SPI0_CS_CSPOL0 0x00200000 /*!< Chip Select 0 Polarity */ +#define BCM2835_SPI0_CS_RXF 0x00100000 /*!< RXF - RX FIFO Full */ +#define BCM2835_SPI0_CS_RXR 0x00080000 /*!< RXR RX FIFO needs Reading (full) */ +#define BCM2835_SPI0_CS_TXD 0x00040000 /*!< TXD TX FIFO can accept Data */ +#define BCM2835_SPI0_CS_RXD 0x00020000 /*!< RXD RX FIFO contains Data */ +#define BCM2835_SPI0_CS_DONE 0x00010000 /*!< Done transfer Done */ +#define BCM2835_SPI0_CS_TE_EN 0x00008000 /*!< Unused */ +#define BCM2835_SPI0_CS_LMONO 0x00004000 /*!< Unused */ +#define BCM2835_SPI0_CS_LEN 0x00002000 /*!< LEN LoSSI enable */ +#define BCM2835_SPI0_CS_REN 0x00001000 /*!< REN Read Enable */ +#define BCM2835_SPI0_CS_ADCS 0x00000800 /*!< ADCS Automatically Deassert Chip Select */ +#define BCM2835_SPI0_CS_INTR 0x00000400 /*!< INTR Interrupt on RXR */ +#define BCM2835_SPI0_CS_INTD 0x00000200 /*!< INTD Interrupt on Done */ +#define BCM2835_SPI0_CS_DMAEN 0x00000100 /*!< DMAEN DMA Enable */ +#define BCM2835_SPI0_CS_TA 0x00000080 /*!< Transfer Active */ +#define BCM2835_SPI0_CS_CSPOL 0x00000040 /*!< Chip Select Polarity */ +#define BCM2835_SPI0_CS_CLEAR 0x00000030 /*!< Clear FIFO Clear RX and TX */ +#define BCM2835_SPI0_CS_CLEAR_RX 0x00000020 /*!< Clear FIFO Clear RX */ +#define BCM2835_SPI0_CS_CLEAR_TX 0x00000010 /*!< Clear FIFO Clear TX */ +#define BCM2835_SPI0_CS_CPOL 0x00000008 /*!< Clock Polarity */ +#define BCM2835_SPI0_CS_CPHA 0x00000004 /*!< Clock Phase */ +#define BCM2835_SPI0_CS_CS 0x00000003 /*!< Chip Select */ + +/*! \brief bcm2835SPIBitOrder SPI Bit order + Specifies the SPI data bit ordering for bcm2835_spi_setBitOrder() +*/ +typedef enum +{ + BCM2835_SPI_BIT_ORDER_LSBFIRST = 0, /*!< LSB First */ + BCM2835_SPI_BIT_ORDER_MSBFIRST = 1 /*!< MSB First */ +}bcm2835SPIBitOrder; + +/*! \brief SPI Data mode + Specify the SPI data mode to be passed to bcm2835_spi_setDataMode() +*/ +typedef enum +{ + BCM2835_SPI_MODE0 = 0, /*!< CPOL = 0, CPHA = 0 */ + BCM2835_SPI_MODE1 = 1, /*!< CPOL = 0, CPHA = 1 */ + BCM2835_SPI_MODE2 = 2, /*!< CPOL = 1, CPHA = 0 */ + BCM2835_SPI_MODE3 = 3 /*!< CPOL = 1, CPHA = 1 */ +}bcm2835SPIMode; + +/*! \brief bcm2835SPIChipSelect + Specify the SPI chip select pin(s) +*/ +typedef enum +{ + BCM2835_SPI_CS0 = 0, /*!< Chip Select 0 */ + BCM2835_SPI_CS1 = 1, /*!< Chip Select 1 */ + BCM2835_SPI_CS2 = 2, /*!< Chip Select 2 (ie pins CS1 and CS2 are asserted) */ + BCM2835_SPI_CS_NONE = 3 /*!< No CS, control it yourself */ +} bcm2835SPIChipSelect; + +/*! \brief bcm2835SPIClockDivider + Specifies the divider used to generate the SPI clock from the system clock. + Figures below give the divider, clock period and clock frequency. + Clock divided is based on nominal core clock rate of 250MHz on RPi1 and RPi2, and 400MHz on RPi3. + It is reported that (contrary to the documentation) any even divider may used. + The frequencies shown for each divider have been confirmed by measurement on RPi1 and RPi2. + The system clock frequency on RPi3 is different, so the frequency you get from a given divider will be different. + See comments in 'SPI Pins' for information about reliable SPI speeds. + Note: it is possible to change the core clock rate of the RPi 3 back to 250MHz, by putting + \code + core_freq=250 + \endcode + in the config.txt +*/ +typedef enum +{ + BCM2835_SPI_CLOCK_DIVIDER_65536 = 0, /*!< 65536 = 3.814697260kHz on Rpi2, 6.1035156kHz on RPI3 */ + BCM2835_SPI_CLOCK_DIVIDER_32768 = 32768, /*!< 32768 = 7.629394531kHz on Rpi2, 12.20703125kHz on RPI3 */ + BCM2835_SPI_CLOCK_DIVIDER_16384 = 16384, /*!< 16384 = 15.25878906kHz on Rpi2, 24.4140625kHz on RPI3 */ + BCM2835_SPI_CLOCK_DIVIDER_8192 = 8192, /*!< 8192 = 30.51757813kHz on Rpi2, 48.828125kHz on RPI3 */ + BCM2835_SPI_CLOCK_DIVIDER_4096 = 4096, /*!< 4096 = 61.03515625kHz on Rpi2, 97.65625kHz on RPI3 */ + BCM2835_SPI_CLOCK_DIVIDER_2048 = 2048, /*!< 2048 = 122.0703125kHz on Rpi2, 195.3125kHz on RPI3 */ + BCM2835_SPI_CLOCK_DIVIDER_1024 = 1024, /*!< 1024 = 244.140625kHz on Rpi2, 390.625kHz on RPI3 */ + BCM2835_SPI_CLOCK_DIVIDER_512 = 512, /*!< 512 = 488.28125kHz on Rpi2, 781.25kHz on RPI3 */ + BCM2835_SPI_CLOCK_DIVIDER_256 = 256, /*!< 256 = 976.5625kHz on Rpi2, 1.5625MHz on RPI3 */ + BCM2835_SPI_CLOCK_DIVIDER_128 = 128, /*!< 128 = 1.953125MHz on Rpi2, 3.125MHz on RPI3 */ + BCM2835_SPI_CLOCK_DIVIDER_64 = 64, /*!< 64 = 3.90625MHz on Rpi2, 6.250MHz on RPI3 */ + BCM2835_SPI_CLOCK_DIVIDER_32 = 32, /*!< 32 = 7.8125MHz on Rpi2, 12.5MHz on RPI3 */ + BCM2835_SPI_CLOCK_DIVIDER_16 = 16, /*!< 16 = 15.625MHz on Rpi2, 25MHz on RPI3 */ + BCM2835_SPI_CLOCK_DIVIDER_8 = 8, /*!< 8 = 31.25MHz on Rpi2, 50MHz on RPI3 */ + BCM2835_SPI_CLOCK_DIVIDER_4 = 4, /*!< 4 = 62.5MHz on Rpi2, 100MHz on RPI3. Dont expect this speed to work reliably. */ + BCM2835_SPI_CLOCK_DIVIDER_2 = 2, /*!< 2 = 125MHz on Rpi2, 200MHz on RPI3, fastest you can get. Dont expect this speed to work reliably.*/ + BCM2835_SPI_CLOCK_DIVIDER_1 = 1 /*!< 1 = 3.814697260kHz on Rpi2, 6.1035156kHz on RPI3, same as 0/65536 */ +} bcm2835SPIClockDivider; + +/* Defines for I2C + GPIO register offsets from BCM2835_BSC*_BASE. + Offsets into the BSC Peripheral block in bytes per 3.1 BSC Register Map +*/ +#define BCM2835_BSC_C 0x0000 /*!< BSC Master Control */ +#define BCM2835_BSC_S 0x0004 /*!< BSC Master Status */ +#define BCM2835_BSC_DLEN 0x0008 /*!< BSC Master Data Length */ +#define BCM2835_BSC_A 0x000c /*!< BSC Master Slave Address */ +#define BCM2835_BSC_FIFO 0x0010 /*!< BSC Master Data FIFO */ +#define BCM2835_BSC_DIV 0x0014 /*!< BSC Master Clock Divider */ +#define BCM2835_BSC_DEL 0x0018 /*!< BSC Master Data Delay */ +#define BCM2835_BSC_CLKT 0x001c /*!< BSC Master Clock Stretch Timeout */ + +/* Register masks for BSC_C */ +#define BCM2835_BSC_C_I2CEN 0x00008000 /*!< I2C Enable, 0 = disabled, 1 = enabled */ +#define BCM2835_BSC_C_INTR 0x00000400 /*!< Interrupt on RX */ +#define BCM2835_BSC_C_INTT 0x00000200 /*!< Interrupt on TX */ +#define BCM2835_BSC_C_INTD 0x00000100 /*!< Interrupt on DONE */ +#define BCM2835_BSC_C_ST 0x00000080 /*!< Start transfer, 1 = Start a new transfer */ +#define BCM2835_BSC_C_CLEAR_1 0x00000020 /*!< Clear FIFO Clear */ +#define BCM2835_BSC_C_CLEAR_2 0x00000010 /*!< Clear FIFO Clear */ +#define BCM2835_BSC_C_READ 0x00000001 /*!< Read transfer */ + +/* Register masks for BSC_S */ +#define BCM2835_BSC_S_CLKT 0x00000200 /*!< Clock stretch timeout */ +#define BCM2835_BSC_S_ERR 0x00000100 /*!< ACK error */ +#define BCM2835_BSC_S_RXF 0x00000080 /*!< RXF FIFO full, 0 = FIFO is not full, 1 = FIFO is full */ +#define BCM2835_BSC_S_TXE 0x00000040 /*!< TXE FIFO full, 0 = FIFO is not full, 1 = FIFO is full */ +#define BCM2835_BSC_S_RXD 0x00000020 /*!< RXD FIFO contains data */ +#define BCM2835_BSC_S_TXD 0x00000010 /*!< TXD FIFO can accept data */ +#define BCM2835_BSC_S_RXR 0x00000008 /*!< RXR FIFO needs reading (full) */ +#define BCM2835_BSC_S_TXW 0x00000004 /*!< TXW FIFO needs writing (full) */ +#define BCM2835_BSC_S_DONE 0x00000002 /*!< Transfer DONE */ +#define BCM2835_BSC_S_TA 0x00000001 /*!< Transfer Active */ + +#define BCM2835_BSC_FIFO_SIZE 16 /*!< BSC FIFO size */ + +/*! \brief bcm2835I2CClockDivider + Specifies the divider used to generate the I2C clock from the system clock. + Clock divided is based on nominal base clock rate of 250MHz +*/ +typedef enum +{ + BCM2835_I2C_CLOCK_DIVIDER_2500 = 2500, /*!< 2500 = 10us = 100 kHz */ + BCM2835_I2C_CLOCK_DIVIDER_626 = 626, /*!< 622 = 2.504us = 399.3610 kHz */ + BCM2835_I2C_CLOCK_DIVIDER_150 = 150, /*!< 150 = 60ns = 1.666 MHz (default at reset) */ + BCM2835_I2C_CLOCK_DIVIDER_148 = 148 /*!< 148 = 59ns = 1.689 MHz */ +} bcm2835I2CClockDivider; + +/*! \brief bcm2835I2CReasonCodes + Specifies the reason codes for the bcm2835_i2c_write and bcm2835_i2c_read functions. +*/ +typedef enum +{ + BCM2835_I2C_REASON_OK = 0x00, /*!< Success */ + BCM2835_I2C_REASON_ERROR_NACK = 0x01, /*!< Received a NACK */ + BCM2835_I2C_REASON_ERROR_CLKT = 0x02, /*!< Received Clock Stretch Timeout */ + BCM2835_I2C_REASON_ERROR_DATA = 0x04 /*!< Not all data is sent / received */ +} bcm2835I2CReasonCodes; + +/* Defines for ST + GPIO register offsets from BCM2835_ST_BASE. + Offsets into the ST Peripheral block in bytes per 12.1 System Timer Registers + The System Timer peripheral provides four 32-bit timer channels and a single 64-bit free running counter. + BCM2835_ST_CLO is the System Timer Counter Lower bits register. + The system timer free-running counter lower register is a read-only register that returns the current value + of the lower 32-bits of the free running counter. + BCM2835_ST_CHI is the System Timer Counter Upper bits register. + The system timer free-running counter upper register is a read-only register that returns the current value + of the upper 32-bits of the free running counter. +*/ +#define BCM2835_ST_CS 0x0000 /*!< System Timer Control/Status */ +#define BCM2835_ST_CLO 0x0004 /*!< System Timer Counter Lower 32 bits */ +#define BCM2835_ST_CHI 0x0008 /*!< System Timer Counter Upper 32 bits */ + +/*! @} */ + + +/* Defines for PWM, word offsets (ie 4 byte multiples) */ +#define BCM2835_PWM_CONTROL 0 +#define BCM2835_PWM_STATUS 1 +#define BCM2835_PWM_DMAC 2 +#define BCM2835_PWM0_RANGE 4 +#define BCM2835_PWM0_DATA 5 +#define BCM2835_PWM_FIF1 6 +#define BCM2835_PWM1_RANGE 8 +#define BCM2835_PWM1_DATA 9 + +/* Defines for PWM Clock, word offsets (ie 4 byte multiples) */ +#define BCM2835_PWMCLK_CNTL 40 +#define BCM2835_PWMCLK_DIV 41 +#define BCM2835_PWM_PASSWRD (0x5A << 24) /*!< Password to enable setting PWM clock */ + +#define BCM2835_PWM1_MS_MODE 0x8000 /*!< Run in Mark/Space mode */ +#define BCM2835_PWM1_USEFIFO 0x2000 /*!< Data from FIFO */ +#define BCM2835_PWM1_REVPOLAR 0x1000 /*!< Reverse polarity */ +#define BCM2835_PWM1_OFFSTATE 0x0800 /*!< Ouput Off state */ +#define BCM2835_PWM1_REPEATFF 0x0400 /*!< Repeat last value if FIFO empty */ +#define BCM2835_PWM1_SERIAL 0x0200 /*!< Run in serial mode */ +#define BCM2835_PWM1_ENABLE 0x0100 /*!< Channel Enable */ + +#define BCM2835_PWM0_MS_MODE 0x0080 /*!< Run in Mark/Space mode */ +#define BCM2835_PWM_CLEAR_FIFO 0x0040 /*!< Clear FIFO */ +#define BCM2835_PWM0_USEFIFO 0x0020 /*!< Data from FIFO */ +#define BCM2835_PWM0_REVPOLAR 0x0010 /*!< Reverse polarity */ +#define BCM2835_PWM0_OFFSTATE 0x0008 /*!< Ouput Off state */ +#define BCM2835_PWM0_REPEATFF 0x0004 /*!< Repeat last value if FIFO empty */ +#define BCM2835_PWM0_SERIAL 0x0002 /*!< Run in serial mode */ +#define BCM2835_PWM0_ENABLE 0x0001 /*!< Channel Enable */ + +/*! \brief bcm2835PWMClockDivider + Specifies the divider used to generate the PWM clock from the system clock. + Figures below give the divider, clock period and clock frequency. + Clock divided is based on nominal PWM base clock rate of 19.2MHz + The frequencies shown for each divider have been confirmed by measurement +*/ +typedef enum +{ + BCM2835_PWM_CLOCK_DIVIDER_2048 = 2048, /*!< 2048 = 9.375kHz */ + BCM2835_PWM_CLOCK_DIVIDER_1024 = 1024, /*!< 1024 = 18.75kHz */ + BCM2835_PWM_CLOCK_DIVIDER_512 = 512, /*!< 512 = 37.5kHz */ + BCM2835_PWM_CLOCK_DIVIDER_256 = 256, /*!< 256 = 75kHz */ + BCM2835_PWM_CLOCK_DIVIDER_128 = 128, /*!< 128 = 150kHz */ + BCM2835_PWM_CLOCK_DIVIDER_64 = 64, /*!< 64 = 300kHz */ + BCM2835_PWM_CLOCK_DIVIDER_32 = 32, /*!< 32 = 600.0kHz */ + BCM2835_PWM_CLOCK_DIVIDER_16 = 16, /*!< 16 = 1.2MHz */ + BCM2835_PWM_CLOCK_DIVIDER_8 = 8, /*!< 8 = 2.4MHz */ + BCM2835_PWM_CLOCK_DIVIDER_4 = 4, /*!< 4 = 4.8MHz */ + BCM2835_PWM_CLOCK_DIVIDER_2 = 2, /*!< 2 = 9.6MHz, fastest you can get */ + BCM2835_PWM_CLOCK_DIVIDER_1 = 1 /*!< 1 = 4.6875kHz, same as divider 4096 */ +} bcm2835PWMClockDivider; + +/* Historical name compatibility */ +#ifndef BCM2835_NO_DELAY_COMPATIBILITY +#define delay(x) bcm2835_delay(x) +#define delayMicroseconds(x) bcm2835_delayMicroseconds(x) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + /*! \defgroup init Library initialisation and management + These functions allow you to intialise and control the bcm2835 library + @{ + */ + + /*! Initialise the library by opening /dev/mem (if you are root) + or /dev/gpiomem (if you are not) + and getting pointers to the + internal memory for BCM 2835 device registers. You must call this (successfully) + before calling any other + functions in this library (except bcm2835_set_debug). + If bcm2835_init() fails by returning 0, + calling any other function may result in crashes or other failures. + If bcm2835_init() succeeds but you are not running as root, then only gpio operations + are permitted, and calling any other functions may result in crashes or other failures. . + Prints messages to stderr in case of errors. + \return 1 if successful else 0 + */ + extern int bcm2835_init(void); + + /*! Close the library, deallocating any allocated memory and closing /dev/mem + \return 1 if successful else 0 + */ + extern int bcm2835_close(void); + + /*! Sets the debug level of the library. + A value of 1 prevents mapping to /dev/mem, and makes the library print out + what it would do, rather than accessing the GPIO registers. + A value of 0, the default, causes normal operation. + Call this before calling bcm2835_init(); + \param[in] debug The new debug level. 1 means debug + */ + extern void bcm2835_set_debug(uint8_t debug); + + /*! Returns the version number of the library, same as BCM2835_VERSION + \return the current library version number + */ + extern unsigned int bcm2835_version(void); + + /*! @} */ + + /*! \defgroup lowlevel Low level register access + These functions provide low level register access, and should not generally + need to be used + + @{ + */ + + /*! Gets the base of a register + \param[in] regbase You can use one of the common values BCM2835_REGBASE_* + in \ref bcm2835RegisterBase + \return the register base + \sa Physical Addresses + */ + extern uint32_t* bcm2835_regbase(uint8_t regbase); + + /*! Reads 32 bit value from a peripheral address WITH a memory barrier before and after each read. + This is safe, but slow. The MB before protects this read from any in-flight reads that didn't + use a MB. The MB after protects subsequent reads from another peripheral. + + \param[in] paddr Physical address to read from. See BCM2835_GPIO_BASE etc. + \return the value read from the 32 bit register + \sa Physical Addresses + */ + extern uint32_t bcm2835_peri_read(volatile uint32_t* paddr); + + /*! Reads 32 bit value from a peripheral address WITHOUT the read barriers + You should only use this when: + o your code has previously called bcm2835_peri_read() for a register + within the same peripheral, and no read or write to another peripheral has occurred since. + o your code has called bcm2835_memory_barrier() since the last access to ANOTHER peripheral. + + \param[in] paddr Physical address to read from. See BCM2835_GPIO_BASE etc. + \return the value read from the 32 bit register + \sa Physical Addresses + */ + extern uint32_t bcm2835_peri_read_nb(volatile uint32_t* paddr); + + + /*! Writes 32 bit value from a peripheral address WITH a memory barrier before and after each write + This is safe, but slow. The MB before ensures that any in-flight write to another peripheral + completes before this write is issued. The MB after ensures that subsequent reads and writes + to another peripheral will see the effect of this write. + + This is a tricky optimization; if you aren't sure, use the barrier version. + + \param[in] paddr Physical address to read from. See BCM2835_GPIO_BASE etc. + \param[in] value The 32 bit value to write + \sa Physical Addresses + */ + extern void bcm2835_peri_write(volatile uint32_t* paddr, uint32_t value); + + /*! Writes 32 bit value from a peripheral address without the write barrier + You should only use this when: + o your code has previously called bcm2835_peri_write() for a register + within the same peripheral, and no other peripheral access has occurred since. + o your code has called bcm2835_memory_barrier() since the last access to ANOTHER peripheral. + + This is a tricky optimization; if you aren't sure, use the barrier version. + + \param[in] paddr Physical address to read from. See BCM2835_GPIO_BASE etc. + \param[in] value The 32 bit value to write + \sa Physical Addresses + */ + extern void bcm2835_peri_write_nb(volatile uint32_t* paddr, uint32_t value); + + /*! Alters a number of bits in a 32 peripheral regsiter. + It reads the current valu and then alters the bits defines as 1 in mask, + according to the bit value in value. + All other bits that are 0 in the mask are unaffected. + Use this to alter a subset of the bits in a register. + Memory barriers are used. Note that this is not atomic; an interrupt + routine can cause unexpected results. + \param[in] paddr Physical address to read from. See BCM2835_GPIO_BASE etc. + \param[in] value The 32 bit value to write, masked in by mask. + \param[in] mask Bitmask that defines the bits that will be altered in the register. + \sa Physical Addresses + */ + extern void bcm2835_peri_set_bits(volatile uint32_t* paddr, uint32_t value, uint32_t mask); + /*! @} end of lowlevel */ + + /*! \defgroup gpio GPIO register access + These functions allow you to control the GPIO interface. You can set the + function of each GPIO pin, read the input state and set the output state. + @{ + */ + + /*! Sets the Function Select register for the given pin, which configures + the pin as Input, Output or one of the 6 alternate functions. + \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin. + \param[in] mode Mode to set the pin to, one of BCM2835_GPIO_FSEL_* from \ref bcm2835FunctionSelect + */ + extern void bcm2835_gpio_fsel(uint8_t pin, uint8_t mode); + + /*! Sets the specified pin output to + HIGH. + \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin. + \sa bcm2835_gpio_write() + */ + extern void bcm2835_gpio_set(uint8_t pin); + + /*! Sets the specified pin output to + LOW. + \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin. + \sa bcm2835_gpio_write() + */ + extern void bcm2835_gpio_clr(uint8_t pin); + + /*! Sets any of the first 32 GPIO output pins specified in the mask to + HIGH. + \param[in] mask Mask of pins to affect. Use eg: (1 << RPI_GPIO_P1_03) | (1 << RPI_GPIO_P1_05) + \sa bcm2835_gpio_write_multi() + */ + extern void bcm2835_gpio_set_multi(uint32_t mask); + + /*! Sets any of the first 32 GPIO output pins specified in the mask to + LOW. + \param[in] mask Mask of pins to affect. Use eg: (1 << RPI_GPIO_P1_03) | (1 << RPI_GPIO_P1_05) + \sa bcm2835_gpio_write_multi() + */ + extern void bcm2835_gpio_clr_multi(uint32_t mask); + + /*! Reads the current level on the specified + pin and returns either HIGH or LOW. Works whether or not the pin + is an input or an output. + \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin. + \return the current level either HIGH or LOW + */ + extern uint8_t bcm2835_gpio_lev(uint8_t pin); + + /*! Event Detect Status. + Tests whether the specified pin has detected a level or edge + as requested by bcm2835_gpio_ren(), bcm2835_gpio_fen(), bcm2835_gpio_hen(), + bcm2835_gpio_len(), bcm2835_gpio_aren(), bcm2835_gpio_afen(). + Clear the flag for a given pin by calling bcm2835_gpio_set_eds(pin); + \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin. + \return HIGH if the event detect status for the given pin is true. + */ + extern uint8_t bcm2835_gpio_eds(uint8_t pin); + + /*! Same as bcm2835_gpio_eds() but checks if any of the pins specified in + the mask have detected a level or edge. + \param[in] mask Mask of pins to check. Use eg: (1 << RPI_GPIO_P1_03) | (1 << RPI_GPIO_P1_05) + \return Mask of pins HIGH if the event detect status for the given pin is true. + */ + extern uint32_t bcm2835_gpio_eds_multi(uint32_t mask); + + /*! Sets the Event Detect Status register for a given pin to 1, + which has the effect of clearing the flag. Use this afer seeing + an Event Detect Status on the pin. + \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin. + */ + extern void bcm2835_gpio_set_eds(uint8_t pin); + + /*! Same as bcm2835_gpio_set_eds() but clears the flag for any pin which + is set in the mask. + \param[in] mask Mask of pins to clear. Use eg: (1 << RPI_GPIO_P1_03) | (1 << RPI_GPIO_P1_05) + */ + extern void bcm2835_gpio_set_eds_multi(uint32_t mask); + + /*! Enable Rising Edge Detect Enable for the specified pin. + When a rising edge is detected, sets the appropriate pin in Event Detect Status. + The GPRENn registers use + synchronous edge detection. This means the input signal is sampled using the + system clock and then it is looking for a ?011? pattern on the sampled signal. This + has the effect of suppressing glitches. + \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin. + */ + extern void bcm2835_gpio_ren(uint8_t pin); + + /*! Disable Rising Edge Detect Enable for the specified pin. + \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin. + */ + extern void bcm2835_gpio_clr_ren(uint8_t pin); + + /*! Enable Falling Edge Detect Enable for the specified pin. + When a falling edge is detected, sets the appropriate pin in Event Detect Status. + The GPRENn registers use + synchronous edge detection. This means the input signal is sampled using the + system clock and then it is looking for a ?100? pattern on the sampled signal. This + has the effect of suppressing glitches. + \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin. + */ + extern void bcm2835_gpio_fen(uint8_t pin); + + /*! Disable Falling Edge Detect Enable for the specified pin. + \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin. + */ + extern void bcm2835_gpio_clr_fen(uint8_t pin); + + /*! Enable High Detect Enable for the specified pin. + When a HIGH level is detected on the pin, sets the appropriate pin in Event Detect Status. + \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin. + */ + extern void bcm2835_gpio_hen(uint8_t pin); + + /*! Disable High Detect Enable for the specified pin. + \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin. + */ + extern void bcm2835_gpio_clr_hen(uint8_t pin); + + /*! Enable Low Detect Enable for the specified pin. + When a LOW level is detected on the pin, sets the appropriate pin in Event Detect Status. + \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin. + */ + extern void bcm2835_gpio_len(uint8_t pin); + + /*! Disable Low Detect Enable for the specified pin. + \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin. + */ + extern void bcm2835_gpio_clr_len(uint8_t pin); + + /*! Enable Asynchronous Rising Edge Detect Enable for the specified pin. + When a rising edge is detected, sets the appropriate pin in Event Detect Status. + Asynchronous means the incoming signal is not sampled by the system clock. As such + rising edges of very short duration can be detected. + \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin. + */ + extern void bcm2835_gpio_aren(uint8_t pin); + + /*! Disable Asynchronous Rising Edge Detect Enable for the specified pin. + \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin. + */ + extern void bcm2835_gpio_clr_aren(uint8_t pin); + + /*! Enable Asynchronous Falling Edge Detect Enable for the specified pin. + When a falling edge is detected, sets the appropriate pin in Event Detect Status. + Asynchronous means the incoming signal is not sampled by the system clock. As such + falling edges of very short duration can be detected. + \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin. + */ + extern void bcm2835_gpio_afen(uint8_t pin); + + /*! Disable Asynchronous Falling Edge Detect Enable for the specified pin. + \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin. + */ + extern void bcm2835_gpio_clr_afen(uint8_t pin); + + /*! Sets the Pull-up/down register for the given pin. This is + used with bcm2835_gpio_pudclk() to set the Pull-up/down resistor for the given pin. + However, it is usually more convenient to use bcm2835_gpio_set_pud(). + \param[in] pud The desired Pull-up/down mode. One of BCM2835_GPIO_PUD_* from bcm2835PUDControl + \sa bcm2835_gpio_set_pud() + */ + extern void bcm2835_gpio_pud(uint8_t pud); + + /*! Clocks the Pull-up/down value set earlier by bcm2835_gpio_pud() into the pin. + \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin. + \param[in] on HIGH to clock the value from bcm2835_gpio_pud() into the pin. + LOW to remove the clock. + \sa bcm2835_gpio_set_pud() + */ + extern void bcm2835_gpio_pudclk(uint8_t pin, uint8_t on); + + /*! Reads and returns the Pad Control for the given GPIO group. + Caution: requires root access. + \param[in] group The GPIO pad group number, one of BCM2835_PAD_GROUP_GPIO_* + \return Mask of bits from BCM2835_PAD_* from \ref bcm2835PadGroup + */ + extern uint32_t bcm2835_gpio_pad(uint8_t group); + + /*! Sets the Pad Control for the given GPIO group. + Caution: requires root access. + \param[in] group The GPIO pad group number, one of BCM2835_PAD_GROUP_GPIO_* + \param[in] control Mask of bits from BCM2835_PAD_* from \ref bcm2835PadGroup. Note + that it is not necessary to include BCM2835_PAD_PASSWRD in the mask as this + is automatically included. + */ + extern void bcm2835_gpio_set_pad(uint8_t group, uint32_t control); + + /*! Delays for the specified number of milliseconds. + Uses nanosleep(), and therefore does not use CPU until the time is up. + However, you are at the mercy of nanosleep(). From the manual for nanosleep(): + If the interval specified in req is not an exact multiple of the granularity + underlying clock (see time(7)), then the interval will be + rounded up to the next multiple. Furthermore, after the sleep completes, + there may still be a delay before the CPU becomes free to once + again execute the calling thread. + \param[in] millis Delay in milliseconds + */ + extern void bcm2835_delay (unsigned int millis); + + /*! Delays for the specified number of microseconds. + Uses a combination of nanosleep() and a busy wait loop on the BCM2835 system timers, + However, you are at the mercy of nanosleep(). From the manual for nanosleep(): + If the interval specified in req is not an exact multiple of the granularity + underlying clock (see time(7)), then the interval will be + rounded up to the next multiple. Furthermore, after the sleep completes, + there may still be a delay before the CPU becomes free to once + again execute the calling thread. + For times less than about 450 microseconds, uses a busy wait on the System Timer. + It is reported that a delay of 0 microseconds on RaspberryPi will in fact + result in a delay of about 80 microseconds. Your mileage may vary. + \param[in] micros Delay in microseconds + */ + extern void bcm2835_delayMicroseconds (uint64_t micros); + + /*! Sets the output state of the specified pin + \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin. + \param[in] on HIGH sets the output to HIGH and LOW to LOW. + */ + extern void bcm2835_gpio_write(uint8_t pin, uint8_t on); + + /*! Sets any of the first 32 GPIO output pins specified in the mask to the state given by on + \param[in] mask Mask of pins to affect. Use eg: (1 << RPI_GPIO_P1_03) | (1 << RPI_GPIO_P1_05) + \param[in] on HIGH sets the output to HIGH and LOW to LOW. + */ + extern void bcm2835_gpio_write_multi(uint32_t mask, uint8_t on); + + /*! Sets the first 32 GPIO output pins specified in the mask to the value given by value + \param[in] value values required for each bit masked in by mask, eg: (1 << RPI_GPIO_P1_03) | (1 << RPI_GPIO_P1_05) + \param[in] mask Mask of pins to affect. Use eg: (1 << RPI_GPIO_P1_03) | (1 << RPI_GPIO_P1_05) + */ + extern void bcm2835_gpio_write_mask(uint32_t value, uint32_t mask); + + /*! Sets the Pull-up/down mode for the specified pin. This is more convenient than + clocking the mode in with bcm2835_gpio_pud() and bcm2835_gpio_pudclk(). + \param[in] pin GPIO number, or one of RPI_GPIO_P1_* from \ref RPiGPIOPin. + \param[in] pud The desired Pull-up/down mode. One of BCM2835_GPIO_PUD_* from bcm2835PUDControl + */ + extern void bcm2835_gpio_set_pud(uint8_t pin, uint8_t pud); + + /*! @} */ + + /*! \defgroup spi SPI access + These functions let you use SPI0 (Serial Peripheral Interface) to + interface with an external SPI device. + @{ + */ + + /*! Start SPI operations. + Forces RPi SPI0 pins P1-19 (MOSI), P1-21 (MISO), P1-23 (CLK), P1-24 (CE0) and P1-26 (CE1) + to alternate function ALT0, which enables those pins for SPI interface. + You should call bcm2835_spi_end() when all SPI funcitons are complete to return the pins to + their default functions. + \sa bcm2835_spi_end() + \return 1 if successful, 0 otherwise (perhaps because you are not running as root) + */ + extern int bcm2835_spi_begin(void); + + /*! End SPI operations. + SPI0 pins P1-19 (MOSI), P1-21 (MISO), P1-23 (CLK), P1-24 (CE0) and P1-26 (CE1) + are returned to their default INPUT behaviour. + */ + extern void bcm2835_spi_end(void); + + /*! Sets the SPI bit order + NOTE: has no effect. Not supported by SPI0. + Defaults to + \param[in] order The desired bit order, one of BCM2835_SPI_BIT_ORDER_*, + see \ref bcm2835SPIBitOrder + */ + extern void bcm2835_spi_setBitOrder(uint8_t order); + + /*! Sets the SPI clock divider and therefore the + SPI clock speed. + \param[in] divider The desired SPI clock divider, one of BCM2835_SPI_CLOCK_DIVIDER_*, + see \ref bcm2835SPIClockDivider + */ + extern void bcm2835_spi_setClockDivider(uint16_t divider); + + /*! Sets the SPI data mode + Sets the clock polariy and phase + \param[in] mode The desired data mode, one of BCM2835_SPI_MODE*, + see \ref bcm2835SPIMode + */ + extern void bcm2835_spi_setDataMode(uint8_t mode); + + /*! Sets the chip select pin(s) + When an bcm2835_spi_transfer() is made, the selected pin(s) will be asserted during the + transfer. + \param[in] cs Specifies the CS pins(s) that are used to activate the desired slave. + One of BCM2835_SPI_CS*, see \ref bcm2835SPIChipSelect + */ + extern void bcm2835_spi_chipSelect(uint8_t cs); + + /*! Sets the chip select pin polarity for a given pin + When an bcm2835_spi_transfer() occurs, the currently selected chip select pin(s) + will be asserted to the + value given by active. When transfers are not happening, the chip select pin(s) + return to the complement (inactive) value. + \param[in] cs The chip select pin to affect + \param[in] active Whether the chip select pin is to be active HIGH + */ + extern void bcm2835_spi_setChipSelectPolarity(uint8_t cs, uint8_t active); + + /*! Transfers one byte to and from the currently selected SPI slave. + Asserts the currently selected CS pins (as previously set by bcm2835_spi_chipSelect) + during the transfer. + Clocks the 8 bit value out on MOSI, and simultaneously clocks in data from MISO. + Returns the read data byte from the slave. + Uses polled transfer as per section 10.6.1 of the BCM 2835 ARM Peripherls manual + \param[in] value The 8 bit data byte to write to MOSI + \return The 8 bit byte simultaneously read from MISO + \sa bcm2835_spi_transfern() + */ + extern uint8_t bcm2835_spi_transfer(uint8_t value); + + /*! Transfers any number of bytes to and from the currently selected SPI slave. + Asserts the currently selected CS pins (as previously set by bcm2835_spi_chipSelect) + during the transfer. + Clocks the len 8 bit bytes out on MOSI, and simultaneously clocks in data from MISO. + The data read read from the slave is placed into rbuf. rbuf must be at least len bytes long + Uses polled transfer as per section 10.6.1 of the BCM 2835 ARM Peripherls manual + \param[in] tbuf Buffer of bytes to send. + \param[out] rbuf Received bytes will by put in this buffer + \param[in] len Number of bytes in the tbuf buffer, and the number of bytes to send/received + \sa bcm2835_spi_transfer() + */ + extern void bcm2835_spi_transfernb(char* tbuf, char* rbuf, uint32_t len); + + /*! Transfers any number of bytes to and from the currently selected SPI slave + using bcm2835_spi_transfernb. + The returned data from the slave replaces the transmitted data in the buffer. + \param[in,out] buf Buffer of bytes to send. Received bytes will replace the contents + \param[in] len Number of bytes int eh buffer, and the number of bytes to send/received + \sa bcm2835_spi_transfer() + */ + extern void bcm2835_spi_transfern(char* buf, uint32_t len); + + /*! Transfers any number of bytes to the currently selected SPI slave. + Asserts the currently selected CS pins (as previously set by bcm2835_spi_chipSelect) + during the transfer. + \param[in] buf Buffer of bytes to send. + \param[in] len Number of bytes in the buf buffer, and the number of bytes to send + */ + extern void bcm2835_spi_writenb(const char* buf, uint32_t len); + + /*! Transfers half-word to and from the currently selected SPI slave. + Asserts the currently selected CS pins (as previously set by bcm2835_spi_chipSelect) + during the transfer. + Clocks the 8 bit value out on MOSI, and simultaneously clocks in data from MISO. + Returns the read data byte from the slave. + Uses polled transfer as per section 10.6.1 of the BCM 2835 ARM Peripherls manual + \param[in] value The 8 bit data byte to write to MOSI + \sa bcm2835_spi_writenb() + */ + extern void bcm2835_spi_write(uint16_t data); + + /*! Start AUX SPI operations. + Forces RPi AUX SPI pins P1-36 (MOSI), P1-38 (MISO), P1-40 (CLK) and P1-36 (CE2) + to alternate function ALT4, which enables those pins for SPI interface. + \return 1 if successful, 0 otherwise (perhaps because you are not running as root) + */ + extern int bcm2835_aux_spi_begin(void); + + /*! End AUX SPI operations. + SPI1 pins P1-36 (MOSI), P1-38 (MISO), P1-40 (CLK) and P1-36 (CE2) + are returned to their default INPUT behaviour. + */ + extern void bcm2835_aux_spi_end(void); + + /*! Sets the AUX SPI clock divider and therefore the AUX SPI clock speed. + \param[in] divider The desired AUX SPI clock divider. + */ + extern void bcm2835_aux_spi_setClockDivider(uint16_t); + + /*! + * Calculates the input for \sa bcm2835_aux_spi_setClockDivider + * @param speed_hz A value between \sa BCM2835_AUX_SPI_CLOCK_MIN and \sa BCM2835_AUX_SPI_CLOCK_MAX + * @return Input for \sa bcm2835_aux_spi_setClockDivider + */ + extern uint16_t bcm2835_aux_spi_CalcClockDivider(uint32_t speed_hz); + + /*! Transfers half-word to and from the AUX SPI slave. + Asserts the currently selected CS pins during the transfer. + \param[in] value The 8 bit data byte to write to MOSI + \return The 8 bit byte simultaneously read from MISO + \sa bcm2835_spi_transfern() + */ + extern void bcm2835_aux_spi_write(uint16_t); + + /*! Transfers any number of bytes to the AUX SPI slave. + Asserts the CE2 pin during the transfer. + \param[in] buf Buffer of bytes to send. + \param[in] len Number of bytes in the tbuf buffer, and the number of bytes to send + */ + extern void bcm2835_aux_spi_writenb(const char *buf, uint32_t len); + + /*! Transfers any number of bytes to and from the AUX SPI slave + using bcm2835_aux_spi_transfernb. + The returned data from the slave replaces the transmitted data in the buffer. + \param[in,out] buf Buffer of bytes to send. Received bytes will replace the contents + \param[in] len Number of bytes int eh buffer, and the number of bytes to send/received + \sa bcm2835_aux_spi_transfer() + */ + extern void bcm2835_aux_spi_transfern(char *, uint32_t); + + /*! Transfers any number of bytes to and from the AUX SPI slave. + Asserts the CE2 pin during the transfer. + Clocks the len 8 bit bytes out on MOSI, and simultaneously clocks in data from MISO. + The data read read from the slave is placed into rbuf. rbuf must be at least len bytes long + \param[in] tbuf Buffer of bytes to send. + \param[out] rbuf Received bytes will by put in this buffer + \param[in] len Number of bytes in the tbuf buffer, and the number of bytes to send/received + */ + extern void bcm2835_aux_spi_transfernb(const char *, char *, uint32_t); + + /*! @} */ + + /*! \defgroup i2c I2C access + These functions let you use I2C (The Broadcom Serial Control bus with the Philips + I2C bus/interface version 2.1 January 2000.) to interface with an external I2C device. + @{ + */ + + /*! Start I2C operations. + Forces RPi I2C pins P1-03 (SDA) and P1-05 (SCL) + to alternate function ALT0, which enables those pins for I2C interface. + You should call bcm2835_i2c_end() when all I2C functions are complete to return the pins to + their default functions + \return 1 if successful, 0 otherwise (perhaps because you are not running as root) + \sa bcm2835_i2c_end() + */ + extern int bcm2835_i2c_begin(void); + + /*! End I2C operations. + I2C pins P1-03 (SDA) and P1-05 (SCL) + are returned to their default INPUT behaviour. + */ + extern void bcm2835_i2c_end(void); + + /*! Sets the I2C slave address. + \param[in] addr The I2C slave address. + */ + extern void bcm2835_i2c_setSlaveAddress(uint8_t addr); + + /*! Sets the I2C clock divider and therefore the I2C clock speed. + \param[in] divider The desired I2C clock divider, one of BCM2835_I2C_CLOCK_DIVIDER_*, + see \ref bcm2835I2CClockDivider + */ + extern void bcm2835_i2c_setClockDivider(uint16_t divider); + + /*! Sets the I2C clock divider by converting the baudrate parameter to + the equivalent I2C clock divider. ( see \sa bcm2835_i2c_setClockDivider) + For the I2C standard 100khz you would set baudrate to 100000 + The use of baudrate corresponds to its use in the I2C kernel device + driver. (Of course, bcm2835 has nothing to do with the kernel driver) + */ + extern void bcm2835_i2c_set_baudrate(uint32_t baudrate); + + /*! Transfers any number of bytes to the currently selected I2C slave. + (as previously set by \sa bcm2835_i2c_setSlaveAddress) + \param[in] buf Buffer of bytes to send. + \param[in] len Number of bytes in the buf buffer, and the number of bytes to send. + \return reason see \ref bcm2835I2CReasonCodes + */ + extern uint8_t bcm2835_i2c_write(const char * buf, uint32_t len); + + /*! Transfers any number of bytes from the currently selected I2C slave. + (as previously set by \sa bcm2835_i2c_setSlaveAddress) + \param[in] buf Buffer of bytes to receive. + \param[in] len Number of bytes in the buf buffer, and the number of bytes to received. + \return reason see \ref bcm2835I2CReasonCodes + */ + extern uint8_t bcm2835_i2c_read(char* buf, uint32_t len); + + /*! Allows reading from I2C slaves that require a repeated start (without any prior stop) + to read after the required slave register has been set. For example, the popular + MPL3115A2 pressure and temperature sensor. Note that your device must support or + require this mode. If your device does not require this mode then the standard + combined: + \sa bcm2835_i2c_write + \sa bcm2835_i2c_read + are a better choice. + Will read from the slave previously set by \sa bcm2835_i2c_setSlaveAddress + \param[in] regaddr Buffer containing the slave register you wish to read from. + \param[in] buf Buffer of bytes to receive. + \param[in] len Number of bytes in the buf buffer, and the number of bytes to received. + \return reason see \ref bcm2835I2CReasonCodes + */ + extern uint8_t bcm2835_i2c_read_register_rs(char* regaddr, char* buf, uint32_t len); + + /*! Allows sending an arbitrary number of bytes to I2C slaves before issuing a repeated + start (with no prior stop) and reading a response. + Necessary for devices that require such behavior, such as the MLX90620. + Will write to and read from the slave previously set by \sa bcm2835_i2c_setSlaveAddress + \param[in] cmds Buffer containing the bytes to send before the repeated start condition. + \param[in] cmds_len Number of bytes to send from cmds buffer + \param[in] buf Buffer of bytes to receive. + \param[in] buf_len Number of bytes to receive in the buf buffer. + \return reason see \ref bcm2835I2CReasonCodes + */ + extern uint8_t bcm2835_i2c_write_read_rs(char* cmds, uint32_t cmds_len, char* buf, uint32_t buf_len); + + /*! @} */ + + /*! \defgroup st System Timer access + Allows access to and delays using the System Timer Counter. + @{ + */ + + /*! Read the System Timer Counter register. + \return the value read from the System Timer Counter Lower 32 bits register + */ + extern uint64_t bcm2835_st_read(void); + + /*! Delays for the specified number of microseconds with offset. + \param[in] offset_micros Offset in microseconds + \param[in] micros Delay in microseconds + */ + extern void bcm2835_st_delay(uint64_t offset_micros, uint64_t micros); + + /*! @} */ + + /*! \defgroup pwm Pulse Width Modulation + Allows control of 2 independent PWM channels. A limited subset of GPIO pins + can be connected to one of these 2 channels, allowing PWM control of GPIO pins. + You have to set the desired pin into a particular Alt Fun to PWM output. See the PWM + documentation on the Main Page. + @{ + */ + + /*! Sets the PWM clock divisor, + to control the basic PWM pulse widths. + \param[in] divisor Divides the basic 19.2MHz PWM clock. You can use one of the common + values BCM2835_PWM_CLOCK_DIVIDER_* in \ref bcm2835PWMClockDivider + */ + extern void bcm2835_pwm_set_clock(uint32_t divisor); + + /*! Sets the mode of the given PWM channel, + allowing you to control the PWM mode and enable/disable that channel + \param[in] channel The PWM channel. 0 or 1. + \param[in] markspace Set true if you want Mark-Space mode. 0 for Balanced mode. + \param[in] enabled Set true to enable this channel and produce PWM pulses. + */ + extern void bcm2835_pwm_set_mode(uint8_t channel, uint8_t markspace, uint8_t enabled); + + /*! Sets the maximum range of the PWM output. + The data value can vary between 0 and this range to control PWM output + \param[in] channel The PWM channel. 0 or 1. + \param[in] range The maximum value permitted for DATA. + */ + extern void bcm2835_pwm_set_range(uint8_t channel, uint32_t range); + + /*! Sets the PWM pulse ratio to emit to DATA/RANGE, + where RANGE is set by bcm2835_pwm_set_range(). + \param[in] channel The PWM channel. 0 or 1. + \param[in] data Controls the PWM output ratio as a fraction of the range. + Can vary from 0 to RANGE. + */ + extern void bcm2835_pwm_set_data(uint8_t channel, uint32_t data); + + /*! @} */ +#ifdef __cplusplus +} +#endif + +#endif /* BCM2835_H */ + +/*! @example blink.c + Blinks RPi GPIO pin 11 on and off +*/ + +/*! @example input.c + Reads the state of an RPi input pin +*/ + +/*! @example event.c + Shows how to use event detection on an input pin +*/ + +/*! @example spi.c + Shows how to use SPI interface to transfer a byte to and from an SPI device +*/ + +/*! @example spin.c + Shows how to use SPI interface to transfer a number of bytes to and from an SPI device +*/ + +/*! @example pwm.c + Shows how to use PWM to control GPIO pins +*/ + +/*! @example i2c.c +Command line utility for executing i2c commands with the +Broadcom bcm2835. Contributed by Shahrooz Shahparnia. +*/ + +/*! example gpio.c + Command line utility for executing gpio commands with the + Broadcom bcm2835. Contributed by Shahrooz Shahparnia. +*/ \ No newline at end of file diff --git a/rootfs/usr/share/d3m0n/src/lib/display.cpp b/rootfs/usr/share/d3m0n/src/lib/display.cpp new file mode 100644 index 00000000..97d7d60c --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/lib/display.cpp @@ -0,0 +1,458 @@ +#include "display.h" +#include + +GLFWwindow* display::window = nullptr; +vector display::events; + +void display::setColorFromRGB(int r, int g, int b) { + glColor3f(r / 255.0f, g / 255.0f, b / 255.0f); +} + +// GLFWwindow* window; +// vector events; +void display::registerEvent(short type, DataTypes::Rect rect, function function, Application app) { + log("Registering new event id:"+to_string(type), LogStatus::Loading); + + UIEvent::Listener listener; + listener.type = type; + listener.rect = rect; + listener.callback = function; + listener.app = app; + events.push_back(listener); +} +void display::getClick() { + if(isDebugMode()) { + double xpos, ypos; + int state; + bool clicking=false; + while(true) { + state = glfwGetMouseButton(window, GLFW_MOUSE_BUTTON_LEFT); + if (state == GLFW_PRESS && !clicking) + { + clicking=true; + glfwGetCursorPos(window, &xpos, &ypos); + for(UIEvent::Listener event: events) { + if(event.type == UIEvent::OnClick) { + if(display::checkCollision(DataTypes::Point((int)xpos, (int)ypos), event.rect)) { + // event.callback(event.app); + appManager::launchApp(event.app); + } + } + } + } else if(state == GLFW_RELEASE) { + clicking=false; + } + glfwPollEvents(); + } + + + } else { + int x, y; + int pen_irq; + bcm2835_gpio_write(RES, LOW); + bcm2835_delay(100); + bcm2835_gpio_write(RES, HIGH); + bcm2835_delay(100); + while(true) { + usleep(10000); /* do it anyway ; settle time when pen goes up */ + pen_irq = bcm2835_gpio_lev(T_IRQ); + if (pen_irq == LOW) { /* P1.22 == PenIRQ is LOW : touch! pen is down */ + xptGetxy(T_CS, &x, &y); + printf("touch !! x=%5d y=%5d\n", x, y); + } + } + + bcm2835_close(); + } +} +bool display::checkCollision(DataTypes::Point point, DataTypes::Rect rect) { + if(point.X > rect.X && point.X < rect.X2) { + if(point.Y > rect.Y && point.Y < rect.Y2) { + return true; + } + } + return false; +} +void display::PlaySound(string name) + { + string theme_path = GetPath()+"/themes/"+getSetting("theme", GetConfig())+"/sounds"; + try + { + if(filesystem::exists(theme_path+"/"+name+".ogg")) + { + system(("paplay '"+theme_path+"/"+name+".ogg'").c_str()); + log("Playing '"+theme_path+"/"+name+".ogg'...", LogStatus::Info); + } + else + { + log("sound '"+name+"' is not found", LogStatus::Error); + } + } + catch(exception) + { + log("Could not find command 'paplay' >> can't play sound file", LogStatus::Error); + } + } +string display::GetThemeIcon(string name) { + string theme_path = GetPath()+"/themes/"+getSetting("theme", GetConfig())+"/icons"; + if(filesystem::exists(theme_path+"/"+name+".png")) + { + return theme_path+"/"+name+".png"; + } + else + { + return GetPath()+"/default.png"; + } + } +string display::displayCommand(string command) { + string output=""; + // if(isDebugMode()) { return "Debug Mode, Command not executed."; } + // clear screen + if(startsWith(command, "display clear")) { + output+=log("Cleared display screen successfully!", LogStatus::Success); + display::Clear(); + } + // draw Controls on screen + // else if(startsWith(command, "display draw ")) { output+=log("Cleared display screen successfully!", LogStatus::Success); lcdFillScreen(Colors::Black); }; + else { + output+=log("Usage: 'display [clear/draw] ...'", LogStatus::Error); + } + return output; +} + +void display::init(int width, int height) +{ + if(isDebugMode()) { + if (!glfwInit()) { + log("Error: Could not start OpenGL!", LogStatus::Critical); + return; + } + // glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); + // glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); + // glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + // Create a windowed mode window and its OpenGL context + window = glfwCreateWindow(width, height, window_name.c_str(), NULL, NULL); + if (!window) { + log("Error: Could not create emulator's window!", LogStatus::Critical); + glfwTerminate(); + return; + } + + glfwMakeContextCurrent(window); + glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_NORMAL); + // Initialize GLEW + glewExperimental = GL_TRUE; // Needed for core profile + if (glewInit() != GLEW_OK) { + log("Error: Failed to initialize GLEW", LogStatus::Critical); + glfwTerminate(); + return; + } + + // Set up orthographic projection + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluOrtho2D(0.0, width, height, 0.0); + glMatrixMode(GL_MODELVIEW); + // return window; + } else { + log("Initiating ILI9340 LCD...", LogStatus::Loading); + + if (bcm2835_init() != 1) return; + bcm2835_gpio_fsel(T_IRQ, BCM2835_GPIO_FSEL_INPT); // T_IRQ + bcm2835_gpio_fsel(RES, BCM2835_GPIO_FSEL_OUTP); // RES + + printf("Init\n"); + lcdInit(width, height, 0, 0); + printf("Reset\n"); + lcdReset(); + printf("Setup\n"); + lcdSetup(); + lcdFillScreen(Colors::Black); + + + + // FontxFile fx24G[2]; + // FontxFile fx16G[2]; + + // Fontx_init(fx24G,"./lib/fontx/ILGH24XB.FNT","./lib/fontx/ILGZ24XB.FNT"); // 12x24Dot Gothic + // Fontx_init(fx16G,"./lib/fontx/ILGH16XB.FNT","./lib/fontx/ILGZ16XB.FNT"); // 8x16Dot Gothic + // FontxFile fx32M[2]; + // FontxFile fx24M[2]; + // FontxFile fx16M[2]; + // Fontx_init(fx32M,"./lib/fontx/ILMH32XF.FNT","./lib/fontx/ILMZ32XF.FNT"); // 16x32Dot Mincyo + // Fontx_init(fx24M,"./lib/fontx/ILMH24XF.FNT","./lib/fontx/ILMZ24XF.FNT"); // 12x24Dot Mincyo + // Fontx_init(fx16M,"./lib/fontx/ILMH16XB.FNT","./lib/fontx/ILMZ16XF.FNT"); // 8x16Dot Mincyo + + log("Loaded fonts successfully!", LogStatus::Success); + } + log("Initiated screen!", LogStatus::Info); +} +void display::drawScreen() { + if(isDebugMode()) { + glfwSwapBuffers(window); + } +} +void display::Clear() { + if (isDebugMode()) { + glClear(GL_COLOR_BUFFER_BIT); + } else { + lcdFillScreen(Colors::Black); + } +} +// Drawing functions +void display::drawCircle(int x1, int y1, int radius, ushort color, bool fill) { + + if(isDebugMode()) { + float t1 = radius / 16; + float t2; + int x = radius; + int y = 0; + while(x < y) { + display::drawPixel(x, y, color); + // Pixel (x, y) and all symmetric pixels are colored (8 times) + y = y + 1; + t1 = t1 + y; + t2 = t1 - x; + if(t2 >= 0) { + t1 = t2; + x = x - 1; + } + + } + + } else { + if (fill) { + lcdDrawFillCircle(static_cast(x1), static_cast(y1), static_cast(radius), static_cast(color)); + return; + } + lcdDrawCircle(static_cast(x1), static_cast(y1), static_cast(radius), static_cast(color)); + } +} +// round rect +void display::drawRoundRect(int x1, int y1, int x2, int y2, ushort color, int radius, bool fill) + { + + log("RoundRect not def", LogStatus::Critical); + + if(isDebugMode())return; + + lcdDrawRoundRect(static_cast(x1), static_cast(y1), static_cast(x2), static_cast(y2), static_cast(radius), static_cast(color)); + } +// rect +void display::drawRect(int x1, int y1, int x2, int y2, ushort color, bool fill) +{ + + if(isDebugMode()) { + // uint8_t r; + // uint8_t g; + // uint8_t b; + // int isfilled=0; + // RGB565toRGB((uint16_t)color, r, g, b); + if(fill) { + int height=y2-y1; + int width=x2-x1; + for(int y=0; y(x1), static_cast(y1), static_cast(x2), static_cast(y2), static_cast(color)); + return; + } + lcdDrawRect(static_cast(x1), static_cast(y1), static_cast(x2), static_cast(y2), static_cast(color)); + } +} +// line +void display::drawLine(int x1, int y1, int x2, int y2, ushort color) +{ + if(isDebugMode()) { + glBegin(GL_LINES); + uint8_t r,g,b; + RGB565toRGB(color, r, g, b); + display::setColorFromRGB(r,g,b); + glVertex2f(x1, y1); + glVertex2f(x2, y2); + glEnd(); + drawScreen(); + } else { + lcdDrawLine(static_cast(x1), static_cast(y1), static_cast(x2), static_cast(y2), static_cast(color)); + } +} +void display::drawPixel(int x, int y, ushort color) +{ + + if(isDebugMode()) { + uint8_t r; + uint8_t g; + uint8_t b; + RGB565toRGB((uint16_t)color, r, g, b); + // logn(to_string(r)+","+to_string(g)+","+to_string(b)+" ==> "+to_string(color), ConsoleColor::Red); + // Vec3b color2((int)r, (int)g, (int)b); // Red color (BGR format) + // // Draw the pixel + // image.at(y, x) = color2; + // // Display the image in the window + // imshow(window_name, image); + glBegin(GL_POINTS); + setColorFromRGB(r, g, b); + glVertex2i(x,y); + glEnd(); + } else { + lcdDrawPixel(static_cast(x), static_cast(y), static_cast(color)); + } +} +// writing text to the display +void display::drawText(int x, int y, int fontSize, string text, bool bold, ushort color) +{ + + // return; + if(isDebugMode()) { + string filePath = "./lib/fontx/ILGH16XB.FNT"; + + vector data; + if (readAllBytes(filePath, data)) { + cout << "Successfully read " << data.size() << " bytes from the font file." << endl; + // ofstream myfile; + // myfile.open("output.txt"); + int line=0; + int font_padding = 2; + for(char c: text) { + int offset = 17+static_cast(c)*16; + for(int x2=offset; x2 bits(data[x2]); + int bitOffsetInByte = 0; + for(char a: bits.to_string()) { + if(a=='1') { + glBegin(GL_POINTS); + setColorFromRGB(255, 255, 255); + glVertex2i(x+bitOffsetInByte,y+line); + glEnd(); + } + bitOffsetInByte++; + } + // cout << "\n"; + line++; + } + x+=8; + line=0; + + } + drawScreen(); + + return; + + int y=0; + for(int x=17+48*16*8; x<17+48*16*8+16*8; x++) { + bitset<8> bits(data[x]); + if(y%8==0) { + cout << bits.to_string(); + // for(char a: bits.to_string()) { + // if(a=='1') { + // cout << "#"; + // } else { + // cout << " "; + // } + // } + cout << endl; + } else { + cout << bits.to_string(); + // for(char a: bits.to_string()) { + // if(a=='1') { + // cout << "#"; + // } else { + // cout << " "; + // } + // } + } + y+=8; + } + + } else { + cerr << "Error reading the file." << endl; + } + + + //get_font("./lib/fontx/ILGH16XB.FNT", static_cast('0')); + } else { + string font1 = GetPath()+"/src/lib/fontx/IL"; + string end_font1 = ""; + string fontName = "MINCYO"; + if(fontName == "GOTHIC") { font1+="G"; } else { + font1+="M"; + } + if(bold) { + end_font1="XF.FNT"; + } + else{ + end_font1="XB.FNT"; + } + FontxFile fx32G[2]; + printf((font1+"H"+to_string(fontSize)+end_font1).c_str()); + Fontx_init(fx32G,(font1+"H"+to_string(fontSize)+end_font1).data(),(font1+"Z"+to_string(fontSize)+end_font1).data()); + // get font width & height + uint8_t buffer[FontxGlyphBufSize]; + uint8_t fontWidth; + uint8_t fontHeight; + GetFontx(fx32G, 0, buffer, &fontWidth, &fontWidth); + uint8_t ascii[20]; + strcpy((char *)ascii, text.c_str()); + lcdSetFontDirection(DIRECTION180); + lcdDrawUTF8String(fx32G, x, y, ascii, static_cast(color)); + } +} +// image draw +void display::drawImage(DataTypes::Point location, string file, int width, int height, bool reverse) { + // logn("img X:" + to_string(location.X) + " Y:" + to_string(location.Y), ConsoleColor::DarkCyan); + // logn("width:" + to_string(width) + " height:" + to_string(height), ConsoleColor::DarkCyan); + // Load the image (IMREAD_UNCHANGED to keep alpha if any) + Mat image2 = imread(file.c_str(), IMREAD_UNCHANGED); + if (image2.empty()) { + log("Could not open or find the image.", LogStatus::Error); + return; + } + // Resize the image + Mat resizedImage; + cv::Size newSize(width, height); + resize(image2, resizedImage, newSize); + + // Determine if the loaded image has an alpha channel + bool hasAlpha = (resizedImage.channels() == 4); + int x = 0, y = 0; + float alpha = 1.0f; + for (int i = 0; i < resizedImage.rows; ++i) { + for (int j = 0; j < resizedImage.cols; ++j) { + Vec4b color; + if (hasAlpha) { + color = resizedImage.at(i, j); + } else { + Vec3b color3 = resizedImage.at(i, j); + color = Vec4b(color3[0], color3[1], color3[2], 255); // Set alpha to 255 (fully opaque) + } + uchar b = color[0]; + uchar g = color[1]; + uchar r = color[2]; + alpha = color[3] / 255.0f; // Normalize alpha to 0-1 + if (alpha == 0) { + continue; // Skip fully transparent pixels + } + if (isDebugMode()) { + glBegin(GL_POINTS); + setColorFromRGB(r, g, b); // Assuming setColorFromRGB now also takes alpha + glVertex2i(j + location.X, i + location.Y); + glEnd(); + } else { + ushort color2 = (ushort) ((r << 11) | (g << 5) | b); + lcdDrawPixel(static_cast(SCREEN_WIDTH - (location.X + x)), static_cast(location.Y + y), color2); + } + } + } + drawScreen(); +} \ No newline at end of file diff --git a/rootfs/usr/share/d3m0n/src/lib/display.h b/rootfs/usr/share/d3m0n/src/lib/display.h new file mode 100644 index 00000000..8f4818e8 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/lib/display.h @@ -0,0 +1,104 @@ +#ifndef DISPLAY_H +#define DISPLAY_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "xpt2046.h" + + + +#include +#include +#include +#include + +#include +#include +#include + +#include "settings.h" +#include "utils.h" + + +using namespace std; +using namespace cv; + +#define T_CS BCM2835_SPI_CS1 +#define RES RPI_V2_GPIO_P1_11 +#define T_IRQ RPI_V2_GPIO_P1_22 + +namespace display { + void setColorFromRGB(int r, int g, int b); + + extern GLFWwindow* window; + extern vector events; + + + void registerEvent(short type, DataTypes::Rect rect, function function, Application app); + + void getClick(); + + bool checkCollision(DataTypes::Point point, DataTypes::Rect rect); + void PlaySound(string name); + string GetThemeIcon(string name); + string displayCommand(string command); + + + void init(int width, int height); + void drawScreen(); + void Clear(); + + + // Drawing functions + + // pixel + void drawPixel(int x, int y, ushort color); + + // circle + void drawCircle(int x1, int y1, int radius, ushort color, bool fill=false); + + // rect + void drawRect(int x1, int y1, int x2, int y2, ushort color, bool fill=false); + + // round rect + void drawRoundRect(int x1, int y1, int x2, int y2, ushort color, int radius, bool fill=false); + // line + void drawLine(int x1, int y1, int x2, int y2, ushort color); + + // writing text to the display + void drawText(int x, int y, int fontSize, string text, bool bold, ushort color); + + + + // image draw + void drawImage(DataTypes::Point location, string file, int width, int height, bool reverse); +}; + + + +#endif \ No newline at end of file diff --git a/rootfs/usr/share/d3m0n/src/lib/fontx.c b/rootfs/usr/share/d3m0n/src/lib/fontx.c new file mode 100644 index 00000000..d8341aeb --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/lib/fontx.c @@ -0,0 +1,572 @@ +#include +#include +#include +#include +#include +#include "fontx.h" + +#define FontxDebug 0 // for Debug + +// フォントファイルパスを構造体に保存 +void Fontx_addFont(FontxFile *fx, const char *path) +{ + memset(fx,0,sizeof(FontxFile)); + fx->path = path; + fx->opened = false; +} + +// フォント構造体を初期化 +void Fontx_init(FontxFile *fxs,const char *f0,const char *f1) +{ + Fontx_addFont(&fxs[0],f0); + Fontx_addFont(&fxs[1],f1); +} + +// フォントファイルをOPEN +bool Fontx_openFontxFile(FontxFile *fx) +{ + FILE *f; + + if(fx->opened == 0){ + fx->opened = true; +if(FontxDebug)printf("[Fontx_openFontxFile]fx->path=[%s]\n",fx->path); + f = fopen(fx->path,"r"); + if(!f){ + fx->valid = false; + printf("FsFontx:%s not found.\n",fx->path); + } else { +if(FontxDebug)printf("[Fontx_openFontxFile]fopen ok\n"); + fx->file = f; + char buf[18]; + + fread(buf, sizeof buf, 1, fx->file); +if(FontxDebug)printf("[Fontx_openFontxFile]fread ok\n"); +// for(i=0;ifxname,&buf[6],8); + fx->w = buf[14]; + fx->h = buf[15]; + fx->is_ank = (buf[16] == 0); + fx->bc = buf[17]; + fx->fsz = (fx->w + 7)/8 * fx->h; + if(fx->fsz > FontxGlyphBufSize){ + printf("too big font size.\n"); + fx->valid = false; + } else { + fx->valid = true; + } + } + } + return fx->valid; +} + +// フォントファイルをCLOSE +void Fontx_closeFontxFile(FontxFile *fx) +{ + if(fx->opened){ + fclose(fx->file); + fx->opened = false; + } +} + + +/* + フォントファイルからフォントパターンを取り出す + + フォントの並び(16X16ドット) + 00000000 01111111 + 12345678 90123456 + 01 pGlyph[000] pGlyph[001] + 02 pGlyph[002] pGlyph[003] + 03 pGlyph[004] pGlyph[005] + 04 pGlyph[006] pGlyph[007] + 05 pGlyph[008] pGlyph[009] + 06 pGlyph[010] pGlyph[011] + 07 pGlyph[012] pGlyph[013] + 08 pGlyph[014] pGlyph[015] + 09 pGlyph[016] pGlyph[017] + 10 pGlyph[018] pGlyph[019] + 11 pGlyph[020] pGlyph[021] + 12 pGlyph[022] pGlyph[023] + 13 pGlyph[024] pGlyph[025] + 14 pGlyph[026] pGlyph[027] + 15 pGlyph[028] pGlyph[029] + 16 pGlyph[030] pGlyph[031] + + フォントの並び(24X24ドット) + 00000000 01111111 11122222 + 12345678 90123456 78901234 + 01 pGlyph[000] pGlyph[001] pGlyph[002] + 02 pGlyph[003] pGlyph[004] pGlyph[005] + 03 pGlyph[006] pGlyph[007] pGlyph[008] + 04 pGlyph[009] pGlyph[010] pGlyph[011] + 05 pGlyph[012] pGlyph[013] pGlyph[014] + 06 pGlyph[015] pGlyph[016] pGlyph[017] + 07 pGlyph[018] pGlyph[019] pGlyph[020] + 08 pGlyph[021] pGlyph[022] pGlyph[023] + 09 pGlyph[024] pGlyph[025] pGlyph[026] + 10 pGlyph[027] pGlyph[028] pGlyph[029] + 11 pGlyph[030] pGlyph[031] pGlyph[032] + 12 pGlyph[033] pGlyph[034] pGlyph[035] + 13 pGlyph[036] pGlyph[037] pGlyph[038] + 14 pGlyph[039] pGlyph[040] pGlyph[041] + 15 pGlyph[042] pGlyph[043] pGlyph[044] + 16 pGlyph[045] pGlyph[046] pGlyph[047] + 17 pGlyph[048] pGlyph[049] pGlyph[050] + 18 pGlyph[051] pGlyph[052] pGlyph[053] + 19 pGlyph[054] pGlyph[055] pGlyph[056] + 20 pGlyph[057] pGlyph[058] pGlyph[059] + 21 pGlyph[060] pGlyph[061] pGlyph[062] + 22 pGlyph[063] pGlyph[064] pGlyph[065] + 23 pGlyph[066] pGlyph[067] pGlyph[068] + 24 pGlyph[069] pGlyph[070] pGlyph[071] + + フォントの並び(32X32ドット) + 00000000 01111111 11122222 22222333 + 12345678 90123456 78901234 56789012 + 01 pGlyph[000] pGlyph[001] pGlyph[002] pGlyph[003] + 02 pGlyph[004] pGlyph[005] pGlyph[006] pGlyph[007] + 03 pGlyph[008] pGlyph[009] pGlyph[010] pGlyph[011] + 04 pGlyph[012] pGlyph[013] pGlyph[014] pGlyph[015] + 05 pGlyph[016] pGlyph[017] pGlyph[018] pGlyph[019] + 06 pGlyph[020] pGlyph[021] pGlyph[022] pGlyph[023] + 07 pGlyph[024] pGlyph[025] pGlyph[026] pGlyph[027] + 08 pGlyph[028] pGlyph[029] pGlyph[030] pGlyph[031] + 09 pGlyph[032] pGlyph[033] pGlyph[034] pGlyph[035] + 10 pGlyph[036] pGlyph[037] pGlyph[038] pGlyph[039] + 11 pGlyph[040] pGlyph[041] pGlyph[042] pGlyph[043] + 12 pGlyph[044] pGlyph[045] pGlyph[046] pGlyph[047] + 13 pGlyph[048] pGlyph[049] pGlyph[050] pGlyph[051] + 14 pGlyph[052] pGlyph[053] pGlyph[054] pGlyph[055] + 15 pGlyph[056] pGlyph[057] pGlyph[058] pGlyph[059] + 16 pGlyph[060] pGlyph[061] pGlyph[062] pGlyph[063] + 17 pGlyph[064] pGlyph[065] pGlyph[066] pGlyph[067] + 18 pGlyph[068] pGlyph[069] pGlyph[070] pGlyph[071] + 19 pGlyph[072] pGlyph[073] pGlyph[074] pGlyph[075] + 20 pGlyph[076] pGlyph[077] pGlyph[078] pGlyph[079] + 21 pGlyph[080] pGlyph[081] pGlyph[082] pGlyph[083] + 22 pGlyph[084] pGlyph[085] pGlyph[086] pGlyph[087] + 23 pGlyph[088] pGlyph[089] pGlyph[090] pGlyph[091] + 24 pGlyph[092] pGlyph[093] pGlyph[094] pGlyph[095] + 25 pGlyph[096] pGlyph[097] pGlyph[098] pGlyph[099] + 26 pGlyph[100] pGlyph[101] pGlyph[102] pGlyph[103] + 27 pGlyph[104] pGlyph[105] pGlyph[106] pGlyph[107] + 28 pGlyph[108] pGlyph[109] pGlyph[110] pGlyph[111] + 29 pGlyph[112] pGlyph[113] pGlyph[114] pGlyph[115] + 30 pGlyph[116] pGlyph[117] pGlyph[118] pGlyph[119] + 31 pGlyph[120] pGlyph[121] pGlyph[122] pGlyph[123] + 32 pGlyph[124] pGlyph[125] pGlyph[127] pGlyph[128] + +*/ + +bool GetFontx(FontxFile *fxs, uint32_t sjis , uint8_t *pGlyph, + uint8_t *pw, uint8_t *ph) +{ + + int i; +// FontxFile fx; + long offset; + +if(FontxDebug)printf("[GetFontx]sjis=%x %d\n",sjis,sjis); + for(i=0; i<2; i++){ + if(!Fontx_openFontxFile(&fxs[i])) continue; +if(FontxDebug)printf("openFontxFile[%d] end\n",i); + + if(sjis < 0x100){ + if(fxs[i].is_ank){ +if(FontxDebug)printf("[GetFontx]fxs.is_ank fxs.fsz=%d\n",fxs[i].fsz); + offset = 17 + sjis * fxs[i].fsz; +if(FontxDebug)printf("[GetFontx]offset=%ld\n",offset); + if(fseek(fxs[i].file, offset, SEEK_SET)) { + printf("Fontx::fseek(18) failed.\n"); + return false; + } + if(fread(pGlyph, 1, fxs[i].fsz, fxs[i].file) != fxs[i].fsz){ + printf("Fontx::fread failed.\n"); + return false; + } + if(pw) *pw = fxs[i].w; + if(ph) *ph = fxs[i].h; + return true; + } + } + else { + if(!fxs[i].is_ank){ + if(fseek(fxs[i].file, 18, SEEK_SET)) { + printf("Fontx::fseek(18) failed.\n"); + return false; + } + uint16_t buf[2], nc = 0, bc = fxs[i].bc; + + while(bc--){ + if(fread((char *)buf, 1, 4, fxs[i].file) != 4){ + printf("Fontx::fread failed.\n"); + return false; + } +if(FontxDebug)printf("[GetFontx]buf=%x %x\n",buf[0],buf[1]); + if(sjis >= buf[0] && sjis <= buf[1]) { + nc += sjis - buf[0]; + uint32_t pos = 18 + fxs[i].bc * 4 + nc * fxs[i].fsz; + if(fseek(fxs[i].file, pos, SEEK_SET)) { + printf("FsFontx::seek(%u) failed.\n",pos); + return false; + } + if(fread(pGlyph, 1, fxs[i].fsz, fxs[i].file) != fxs[i].fsz){ + printf("Fontx::fread failed.\n"); + return false; + } + if(pw) *pw = fxs[i].w; + if(ph) *ph = fxs[i].h; + return true; + } + nc += buf[1] - buf[0] + 1; + } + } + } + } + return false; +} + + +/* + フォントパターンをビットマップイメージに変換する + + fonts(16X16ドット) + 00000000 01111111 + 12345678 90123456 + 01 pGlyph[000] pGlyph[001] + 02 pGlyph[002] pGlyph[003] + 03 pGlyph[004] pGlyph[005] + 04 pGlyph[006] pGlyph[007] + 05 pGlyph[008] pGlyph[009] + 06 pGlyph[010] pGlyph[011] + 07 pGlyph[012] pGlyph[013] + 08 pGlyph[014] pGlyph[015] + 09 pGlyph[016] pGlyph[017] + 10 pGlyph[018] pGlyph[019] + 11 pGlyph[020] pGlyph[021] + 12 pGlyph[022] pGlyph[023] + 13 pGlyph[024] pGlyph[025] + 14 pGlyph[026] pGlyph[027] + 15 pGlyph[028] pGlyph[029] + 16 pGlyph[030] pGlyph[031] + + line[32*4] + 01 line[000] line[001] line[002] .... line[014] line[015] line[016-031] + | Not Use + 07 line[000] line[001] line[002] .... line[014] line[015] line[016-031] + + 08 line[032] line[033] line[034] .... line[046] line[047] line[048-063] + | Not Use + 16 line[032] line[033] line[034] .... line[046] line[047] line[048-063] + + + + fonts(24X24ドット) + 00000000 01111111 11122222 + 12345678 90123456 78901234 + 01 pGlyph[000] pGlyph[001] pGlyph[002] + 02 pGlyph[003] pGlyph[004] pGlyph[005] + 03 pGlyph[006] pGlyph[007] pGlyph[008] + 04 pGlyph[009] pGlyph[010] pGlyph[011] + 05 pGlyph[012] pGlyph[013] pGlyph[014] + 06 pGlyph[015] pGlyph[016] pGlyph[017] + 07 pGlyph[018] pGlyph[019] pGlyph[020] + 08 pGlyph[021] pGlyph[022] pGlyph[023] + 09 pGlyph[024] pGlyph[025] pGlyph[026] + 10 pGlyph[027] pGlyph[028] pGlyph[029] + 11 pGlyph[030] pGlyph[031] pGlyph[032] + 12 pGlyph[033] pGlyph[034] pGlyph[035] + 13 pGlyph[036] pGlyph[037] pGlyph[038] + 14 pGlyph[039] pGlyph[040] pGlyph[041] + 15 pGlyph[042] pGlyph[043] pGlyph[044] + 16 pGlyph[045] pGlyph[046] pGlyph[047] + 17 pGlyph[048] pGlyph[049] pGlyph[050] + 18 pGlyph[051] pGlyph[052] pGlyph[053] + 19 pGlyph[054] pGlyph[055] pGlyph[056] + 20 pGlyph[057] pGlyph[058] pGlyph[059] + 21 pGlyph[060] pGlyph[061] pGlyph[062] + 22 pGlyph[063] pGlyph[064] pGlyph[065] + 23 pGlyph[066] pGlyph[067] pGlyph[068] + 24 pGlyph[069] pGlyph[070] pGlyph[071] + + line[32*4] + 01 line[000] line[001] line[002] .... line[022] line[023] line[024-031] + | Not Use + 08 line[000] line[001] line[002] .... line[022] line[023] line[024-031] + + 09 line[032] line[033] line[034] .... line[054] line[055] line[056-063] + | Not Use + 16 line[032] line[033] line[034] .... line[054] line[055] line[056-063] + + 17 line[064] line[065] line[066] .... line[086] line[087] line[088-095] + | Not Use + 24 line[064] line[065] line[066] .... line[086] line[087] line[088-095] + + + fonts(32X32ドット) + 00000000 01111111 11122222 22222333 + 12345678 90123456 78901234 56789012 + 01 pGlyph[000] pGlyph[001] pGlyph[002] pGlyph[003] + 02 pGlyph[004] pGlyph[005] pGlyph[006] pGlyph[007] + 03 pGlyph[008] pGlyph[009] pGlyph[010] pGlyph[011] + 04 pGlyph[012] pGlyph[013] pGlyph[014] pGlyph[015] + 05 pGlyph[016] pGlyph[017] pGlyph[018] pGlyph[019] + 06 pGlyph[020] pGlyph[021] pGlyph[022] pGlyph[023] + 07 pGlyph[024] pGlyph[025] pGlyph[026] pGlyph[027] + 08 pGlyph[028] pGlyph[029] pGlyph[030] pGlyph[031] + 09 pGlyph[032] pGlyph[033] pGlyph[034] pGlyph[035] + 10 pGlyph[036] pGlyph[037] pGlyph[038] pGlyph[039] + 11 pGlyph[040] pGlyph[041] pGlyph[042] pGlyph[043] + 12 pGlyph[044] pGlyph[045] pGlyph[046] pGlyph[047] + 13 pGlyph[048] pGlyph[049] pGlyph[050] pGlyph[051] + 14 pGlyph[052] pGlyph[053] pGlyph[054] pGlyph[055] + 15 pGlyph[056] pGlyph[057] pGlyph[058] pGlyph[059] + 16 pGlyph[060] pGlyph[061] pGlyph[062] pGlyph[063] + 17 pGlyph[064] pGlyph[065] pGlyph[066] pGlyph[067] + 18 pGlyph[068] pGlyph[069] pGlyph[070] pGlyph[071] + 19 pGlyph[072] pGlyph[073] pGlyph[074] pGlyph[075] + 20 pGlyph[076] pGlyph[077] pGlyph[078] pGlyph[079] + 21 pGlyph[080] pGlyph[081] pGlyph[082] pGlyph[083] + 22 pGlyph[084] pGlyph[085] pGlyph[086] pGlyph[087] + 23 pGlyph[088] pGlyph[089] pGlyph[090] pGlyph[091] + 24 pGlyph[092] pGlyph[093] pGlyph[094] pGlyph[095] + 25 pGlyph[096] pGlyph[097] pGlyph[098] pGlyph[099] + 26 pGlyph[100] pGlyph[101] pGlyph[102] pGlyph[103] + 27 pGlyph[104] pGlyph[105] pGlyph[106] pGlyph[107] + 28 pGlyph[108] pGlyph[109] pGlyph[110] pGlyph[111] + 29 pGlyph[112] pGlyph[113] pGlyph[114] pGlyph[115] + 30 pGlyph[116] pGlyph[117] pGlyph[118] pGlyph[119] + 31 pGlyph[120] pGlyph[121] pGlyph[122] pGlyph[123] + 32 pGlyph[124] pGlyph[125] pGlyph[127] pGlyph[128] + + line[32*4] + 01 line[000] line[001] line[002] .... line[030] line[031] + | + 08 line[000] line[001] line[002] .... line[030] line[031] + + 09 line[032] line[033] line[034] .... line[062] line[063] + | + 16 line[032] line[033] line[034] .... line[062] line[063] + + 17 line[064] line[065] line[066] .... line[094] line[095] + | + 24 line[064] line[065] line[066] .... line[094] line[095] + + 25 line[096] line[097] line[098] .... line[126] line[127] + | + 32 line[096] line[097] line[098] .... line[126] line[127] + +*/ +void Font2Bitmap(uint8_t *fonts, uint8_t *line, uint8_t w, uint8_t h, uint8_t inverse) { + int x,y; + for(y=0; y<(h/8); y++){ + for(x=0; x> (x % 8))) line[linep] = line[linep] + (1 << mask); + } + mask--; + if (mask < 0) mask = 7; + fontp += (w + 7)/8; + } + + if (inverse) { + for(y=0; y<(h/8); y++){ + for(x=0; x> (x % 8))) { + printf("*"); + } else { + printf("."); + } + } + printf("\n"); + fpos=fpos+(pw+7)/8; + } +} + +// Bitmapの表示 +void ShowBitmap(uint8_t *bitmap, uint8_t pw, uint8_t ph) { + int x,y,fpos; + for (y=0;y<(ph+7)/8;y++) { + for (x=0;x> fpos); + if (bitmap[x+(y/8)*32] & (0x80 >> fpos)) { + printf("*"); + } else { + printf("."); + } + } + printf("\n"); + fpos++; + if (fpos > 7) fpos = 0; + } +} + + +// フォント構造体の表示 +void DumpFX(FontxFile *fxs) +{ + int i; + for(i=0;i<2;i++) { + printf("fxs[%d]->path=%s\n",i,fxs[i].path); + printf("fxs[%d]->opened=%d\n",i,fxs[i].opened); + printf("fxs[%d]->fxname=%s\n",i,fxs[i].fxname); + printf("fxs[%d]->valid=%d\n",i,fxs[i].valid); + printf("fxs[%d]->is_ank=%d\n",i,fxs[i].is_ank); + printf("fxs[%d]->w=%d\n",i,fxs[i].w); + printf("fxs[%d]->h=%d\n",i,fxs[i].h); + printf("fxs[%d]->fsz=%d\n",i,fxs[i].fsz); + printf("fxs[%d]->bc=%d\n",i,fxs[i].bc); + } +} + +// UTF code(3Byte) を SJIS Code(2 Byte) に変換 +uint16_t UTF2SJIS(uint8_t *utf8) { + unsigned char strJIS[3] = {0}; + unsigned char *pi1 = utf8; + unsigned char **pi2 = &pi1; + unsigned char *po1 = strJIS; + unsigned char **po2 = &po1; + size_t ilen = 3; + size_t olen = 2; + iconv_t cd; + uint16_t sjis; + + if((cd = iconv_open("sjis","utf-8")) == (iconv_t)-1){ +if(FontxDebug)printf("iconv open fail \n"); + return 0; + }else { +if(FontxDebug)printf("iconv open ok \n"); + } + + iconv(cd,(char**)pi2,&ilen,(char**)po2,&olen); + iconv_close(cd); + +if(FontxDebug)printf("[UTF2SJIS]strJIS=%x-%x\n",strJIS[0],strJIS[1]); + if (strJIS[0] & 0x80) { + sjis = strJIS[0] << 8; + sjis = sjis + strJIS[1]; + } else { + sjis = strJIS[0]; + } +if(FontxDebug)printf("[UTF2SJIS]sjis=%x\n",sjis); + return sjis; +} + + +// UTFを含む文字列をSJISに変換 +int String2SJIS(unsigned char *str_in, uint8_t stlen, uint16_t *sjis, + uint8_t ssize) { + int i; + uint8_t sp; + uint8_t c1 = 0; + uint8_t c2 = 0; + uint8_t utf8[3]; + uint16_t sjis2; + int spos = 0; + + for(i=0;i> 1; + } + return ch2; +} diff --git a/rootfs/usr/share/d3m0n/src/lib/fontx.h b/rootfs/usr/share/d3m0n/src/lib/fontx.h new file mode 100644 index 00000000..c6907f74 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/lib/fontx.h @@ -0,0 +1,33 @@ +#pragma once +#define FontxGlyphBufSize (32*32/8) + +typedef struct { + const char *path; + char fxname[9]; + bool opened; + bool valid; + bool is_ank; + uint8_t w; + uint8_t h; + uint16_t fsz; + uint8_t bc; + FILE *file; +} FontxFile; + +void Fontx_addFont(FontxFile *fx, const char *path); +void Fontx_init(FontxFile *fxs,const char *f0,const char *f1); +bool Fontx_openFontxFile(FontxFile *fx); +void Fontx_closeFontxFile(FontxFile *fx); +bool GetFontx (FontxFile *fxs, uint32_t sjis , uint8_t *pGlyph, + uint8_t *pw, uint8_t *ph); +void Font2Bitmap(uint8_t *fonts, uint8_t *line, uint8_t w, uint8_t h, + uint8_t inverse); +void UnderlineBitmap(uint8_t *line, uint8_t w, uint8_t h); +void ReversBitmap(uint8_t *line, uint8_t w, uint8_t h); +void ShowFont(uint8_t *fonts, uint8_t pw, uint8_t ph); +void ShowBitmap(uint8_t *bitmap, uint8_t pw, uint8_t ph); +void DumpFX(FontxFile *fxs); +uint16_t UTF2SJIS(uint8_t *utf8); +int String2SJIS(unsigned char *str_in, uint8_t stlen, uint16_t *sjis, + uint8_t ssize); +uint8_t RotateByte(uint8_t ch); diff --git a/rootfs/usr/share/d3m0n/src/lib/fontx/FileList.txt b/rootfs/usr/share/d3m0n/src/lib/fontx/FileList.txt new file mode 100644 index 00000000..e426df26 --- /dev/null +++ b/rootfs/usr/share/d3m0n/src/lib/fontx/FileList.txt @@ -0,0 +1,23 @@ +ILGH16XB.FNT 16 dot GOTHIC font (Single byte code) +ILGH24XB.FNT 24 dot GOTHIC font (Single byte code) +ILGH24XF.FNT 24 dot GOTHIC bold font (Single byte code) +ILGH32XB.FNT 32 dot GOTHIC font (Single byte code) +ILGH32XF.FNT 32 dot GOTHIC bold font (Single byte code) +ILGZ16XB.FNT 16 dot GOTHIC font (Double byte code) +ILGZ16XF.FNT 16 dot GOTHIC bold font (Double byte code) +ILGZ24XB.FNT 24 dot GOTHIC font (Double byte code) +ILGZ24XF.FNT 24 dot GOTHIC bold font (Double byte code) +ILGZ32XB.FNT 32 dot GOTHIC font (Double byte code) +ILGZ32XF.FNT 32 dot GOTHIC bold font (Double byte code) + +ILMH16XB.FNT 16 dot MINCYO font (Single byte code) +ILMH24XB.FNT 24 dot MINCYO font (Single byte code) +ILMH24XF.FNT 24 dot MINCYO bold font (Single byte code) +ILMH32XB.FNT 32 dot MINCYO font (Single byte code) +ILMH32XF.FNT 32 dot MINCYO bold font (Single byte code) +ILMZ16XB.FNT 16 dot MINCYO font (Double byte code) +ILMZ16XF.FNT 16 dot MINCYO bold font (Double byte code) +ILMZ24XB.FNT 24 dot MINCYO font (Double byte code) +ILMZ24XF.FNT 24 dot MINCYO bold font (Double byte code) +ILMZ32XB.FNT 32 dot MINCYO font (Double byte code) +ILMZ32XF.FNT 32 dot MINCYO bold font (Double byte code) diff --git a/rootfs/usr/share/d3m0n/src/lib/fontx/ILGH16XB.FNT b/rootfs/usr/share/d3m0n/src/lib/fontx/ILGH16XB.FNT new file mode 100644 index 0000000000000000000000000000000000000000..ff2af0a342d36dd8a5adea14dc2da4bfd1b8acb2 GIT binary patch literal 4113 zcmeHJPix#p6d#X;t%8VEcUh(&HbM-`+L*ElCM>Q{WJRdTVp_BGU`ztbHf-JC!xBm{ zWl>Bq!KWTd4*dc-_A8W>mY(trdJ6PI_|)z1%^zuSN@_2t(` zx9=Z(QQo?9l({~8N4jz~F*9!1eTKh!gEz~rU0&FU8aq!x9kaApEMA|3UN5dIUE8tD ztgmqA?A67^tFwAlh#M{tH|SYswgd2+hA>g`yZOaM9y^*EJSA&>YJ7uL#}oM57T;~`*)VGcVRf;> z8!+aFi}0OOx3uqFros|aK|MW{vRvM`c}G@~s5&i4;3mUzAZ~ng|GUJ4{cQ5f^XI>w zi1w#jTlWjvILPx}e{Wb63320b7^XC_GgaF2{b*qpjV;C&N-v@g6h?jV{e0mhRoqnHbgiiPaq zix)3``~7964G}J`Yq|Vq`kriiomKAf&2i+_MW!*sYSCD~<{7Ul`gmcm`Ce(bY z<%9g$`T5U3JuCJ!Pn+>Ikmh4bEs=?bIa+yc;*lSehqIG1&sB9XMxRn-zBeU$d<@cf zlgX3OXo&hV`U8qDNScD07vviuXnmpO!<|4UbWY;(p#EN5q~pHFGn-#kippTUU!ynq z#B3^M9N7H*L#7?WMyd6uGRBdM<<$89cYfOIE#aYFP_L+N?H|gkri2iRM?F!g1EKKd zCSEkCjF~X%kG=6r9oK|mSrSA%$@FXlh zxB9$+H~!fQV0+ph&J99$ph8~b#l<+_=D3ixx@4R0lQVVvuq&eiu=xkC3&7+bJPA<% zHGc6(?hMc%RKvn*<AVXI)H=4PytUfx@oNk={*sfGgtA+9oL$yHH zq3BUPYdH#cp66(K^m#@4eAR{Qx|I;UlTx(#@%WqTevUIU z8bzc~>t8!0Ud3C4hK@^kYh>Nvq_p;F>vB9Igt5jpce<)ZMk(FvY5a#r{ z5G^@L!DzsLLk{kQr z58iIA%}p91f<$ev_cPi6s?&jbkbwwVGNom7vII9==kp#m(gI&o4A4lyL-mj*9=lCR%b+|(Ak~)7X92Ezu z2{_y%A`d8j%)P{Bo90sf?^C8)Ny?uqsWnKlFV^Z4*oSJO zXU5S)4?{(gdod@OsV-IDkuHrbd)2-Yk^gBy*_w-wMI}^AJQf$?FP1LEqnF6-3DSQ# zmEHO9Z-ePu^Wi^_`ioTd=YU8Xp_9&N&x_(-b)fpXsEW!=`PRxqGu(qC3>%W+% zW%U-w_rwJoF~?^rk)1%KWb0QH~~NVh)v~12NMxP5&QR z3e7u+HWPiVud8cuhDg;DUDeSYd2I<%S9L@uunSR)1P?299DChy8Cd8se;R71Y3u_8ML4M6mpS4z62+M;c> z*cDBpW~_s+YA>sVY;yTJ)_Yjs%1#JX$w-0b1`j(TpcB}-N%)_LOk<@2jsy408QQa%NJ z3i=$xvY|@XvW_?g1w`UpT{iPQHPodnrIhGew{%<4O0-caa$_Hgi8|F%!{*@bsh&a( zZKa$V`g1HF{-e5}J#`zi?^2wrdl+K@*-n0mnsmItM~^Xr zDVRP}&-Bzl6{G?P4Kw_9Owwv^`=@t0jGTAJ`VjvI(1UacyeE3vM_-z6%s282OTU-T?0U^rJC;9{Q~5RMbNL5EW^!DC5Uq(SDCYO^q=_Q% zM-v(p>jnM4 z#2#V*o4P2%-b%ENXQQxdNX{30SuDS)cl|BDzK~;Tto@;t-;v#3M1f8$UbvkXf1iQA zkUy>*aVJRJ;s%sVsV=Ix=)!lmCP*3cQ=hnvA1j}6;{0WNZtkK~-ua^sFz9ahBYYD+lh4$1v{Rn$u zsW0`+JT|eYFqh8NM34PE!*dMFoU52Wyf0RIy@;deYXUDx5;Smh40+r+dHNFX$2#F( z7C8CPyu#_iVBH3PD!;9}+W8kfsqSemzZ92bn))oX0ZPrN8{vadHYpYxd_2`9)P+{u zf4St(3Gs6x9tZYXt++T`sUdRfR{dg!>Ke>(dFu8^aBPnO;$;d|EKoHquxWo}pR!N2zH{?YA) zqn+fE(`B6g+)d(4tpvt`{eQ&cUx_#4M$;NR7kG~J+4M86`s?S5i@Sae@bNm8>q|Z; z{3;MufOYor>j1~VsK>ZBHC|f!f^JqfdaWAg z1+U(8!@nM@4L%!u>IiK7p^iqH-{6yCQZM;m<5TbJNL-1Zfv&K|`P9SdAgpX@&hy33 z)u*Etb~*L)QQR`T|Fh*c-pWO5qbDq>!Bo-y>94 zad*J+^W>RL=)vtyy4d|Z6eINDDdl&24ekxfin}0a2fe7%y3vxqzDrrXx9~lagFCC9 zcpDmhCGH`YOT1qnh}*FCjebvKKc;SpZ4i6g&NZ-QysrwDUUv&h_HcIg?OaJ-{I+US5VrkFyt}k5 zk*+6iA0Th+tyEQ3*7vN0RrZZ7ODTCgmzKrd2Q5q6{s7i}3--N&E}RkdwA2Uu7%^yD z?phkiadobLr0d)QUs~wpd$8<{^8nd3Gw~eyY%RxJZ^5rKyMl3IPz~V8II-yyjFn$+ zax;wIa!5lnG>5!N!`bv?A=%ksr!Ibxx1O%u9QMD9vWUBdbB811=ktfqh{*Ab5&JX0 z$aNs4sHQ+V+qfPHpJ5Eo=3;UWQ#wz2e`|5q_0)mw&B;aBx0#H?=Tmd6C>wQ{@chA;y^QD zCdyCo)f98FvXM#$jgDZ+I9a>cLQ41k$8$4f$MehS?|1bYhrb;Vy)cl zP3=nww9K)%13wz6OC@z>uvQkJBzX+HFP!PS)m_{!U(0_K?ptiq1O+qwXGwip_#(>h z_WOcz=&5NsLM{AVGj<^-_|3G$%-t7VmZH3w+!tl%TRXzx+SmPRVrF?rDFgG6_Y~e2 zI`q+s-dr?=+c)CreV60*dB(}EjvKgGaA=0+Mt)Sm`}Hm5QFBo@Zc$%L;X%UDYLB+| zb)$f0SRXAdcSVu-us>UJzz%Nx%S6OQtZLpy)njNR9u{){0$Kc)qjFS?{zM9|G8XEtopNRm6_;9y;lFwq}S@^6M{=k`UKPGHdlpR{A=F5 z!0-9#%u_Y9wf&D+B_nCH=j-aFJU26`+N!l3e`hGal-Cto`)O?bdpoY{_dxzsbrU
rJ&aFAKIWNHUnk;Inip-#6U#&HSij4C+FntBQ7z`%PE4$NC^v&a?`@^N zUbK8jyRXq!=tD$p*w)wTmAsNUXl5=3^?jax{zRS`PmOKtnep^oZ)Gd=|D~hYqfn)8 zWG(A?ZKbztBBvu)jN?XfP@nc3QP$C^WlZGpIdh5X?jIZ4EUc+{Z7Xi$Ex_hafP z{d&k)VW<{lCfK=v4CZkJyq-CmP>&9c{Z#6Osil@%duvzSs{1?WXAtWaX1tdbY5|If zq`AIq=1a4Xx~sdc!_YF3siCE5qgv(WzR-=il1^ZAaF?bu$f0l7Z7lscl|M0%2rA7n zR?Bnv>4mw4g|`+6fKvWO8sXTry2O51OGUk${2DFe`2rug#tb%KTAQtGEL1_NfY2ht z@8*P=LVGtpz0+gl{X5l%_`iZ4q%+{%$i@$FV7}lmwREj#0wxw~5LC-m)?RVEG&YT+ zRpezZzC9uWPL9tu?Yb4mI0@>kumT~fYL zq+S}xr^o9h@Z2E^Z|$+VEcXlgf30TNB|;S8Y-;pQSEF(XY{A&p2UMTxMHx-^Ykhxm;DYgp#e93FYM)5|W7Vyq^! zeq(GqhdiE~0=+}|Ts|cqnzy)JAX;`6`w1M=MzA{d)(R$2lv8$D-M9FFHJx~v^ zBL1gbvF!XuhUh%BGI*AB=Lm+3u0ssV*>@y=@1fT%{nO(Sxnhp?z1VwO2j6r4Ce9-x z+dg-Km4Ybe&X4{qoSY>0oId0A=V`Lg*i$eUod0#gv?~&C#*M@pxEJL4S(_rc)Bj)x zA9sDUj`8{+yLwyEs*H#a#sAnp>;s$wqaNelW)x3){B9qZ3v@wT2&eNSb(7u+cU`!C zCx$B^+`!!45CtN~6LWu!kh4(znyH>h=#rof&co#UT;tRpZSQ6K8%3-g-e|`EkT=-x|JHy@_<8UIs z?-~2&xx>h=htp^QjegQEpM=q+vhlW)`2bl zOBkP)#jP1Qeg|D5MOMDAdV(I-y_2?e>wM2}28ZmMT9z{Mc!p8=_TkRV(1}{TfPGhb z>PlIC$j>=8eDZ@Dg*@~g{_)JP@tvS;o^xG+EnJHQEEqsH;Ud(Tw4SsS8`C?N~G?YL$<_4P+y0ue{{ zKp({!F#hDUS6GkEYn+8=t^fXlH<3iJFS-{GQ=6sX%MdjVg!c!@b#c14saAgV=2oL} zSo1sTQZLP|>7?ae$#1u#6fg+B@V#8Nm+p=E-IF68vY;B5pe7kyZZ`eE{4l)b+^Qy$lu%-RMv%R)*SSciP42)p3n9i;{6n!J&uUGST%f&qUGq>?2)FahSx;;uq4@)fXqjnKU4nTz3#u| zI9KrPrEZ{0e!XyxLw#8CwW)NLxtH#~X}Z@#e3X?igHomEpGs{oE+QXJhk=u?PCQMf z`Y<}I6~6^NF5T?jeTHvHkLydW$DN0xyeIyMMK1S*PY#t>_k>TxBA0u@Cx=R`d%`DT Kk;^@V&wl~f99~lZ literal 0 HcmV?d00001 diff --git a/rootfs/usr/share/d3m0n/src/lib/fontx/ILGH32XB.FNT b/rootfs/usr/share/d3m0n/src/lib/fontx/ILGH32XB.FNT new file mode 100644 index 0000000000000000000000000000000000000000..3aa145d6ae1ac6f539cf8ed0b3610e819b509afc GIT binary patch literal 16401 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 literal 0 HcmV?d00001 diff --git a/rootfs/usr/share/d3m0n/src/lib/fontx/ILGH32XF.FNT b/rootfs/usr/share/d3m0n/src/lib/fontx/ILGH32XF.FNT new file mode 100644 index 0000000000000000000000000000000000000000..374468f4300a13d430f3bf82a5022550eec3182a GIT binary patch literal 16401 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 literal 0 HcmV?d00001 diff --git a/rootfs/usr/share/d3m0n/src/lib/fontx/ILGZ16XB.FNT b/rootfs/usr/share/d3m0n/src/lib/fontx/ILGZ16XB.FNT new file mode 100644 index 0000000000000000000000000000000000000000..c35e9893a6bd5b3c5fba271a0da5e64a36f57c3a GIT binary patch literal 283146 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

2A#G%Z~G&9X({und@mjN7S5my!hxT8~7|6eG*~ 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%0D@@;54K}}9|WPE(;uo*w}3FB zf7E0!>s`dwq{z8GjP(zedfc8#*+$MaN|sSuGWu^$+X6}I`(+*Ew#h{N;?!Iq(a z)Lf-Wiw=nciCU+lHV%0+{FYq6iCDl6g>`rJ57tY*V+u|}fV}!?RG=z!FhZkT6~H4= z*j#Y(BFAcb?K_}{mO5NK($=eT04U=j7R6(p59VVY?ueO1=QYX!!6avybk9h4vFBD~ zuTpdt`)ifRT18*09NAjzJy5ZhDpu{x8EI9db$p3!dXbf8^w`&eIH-*N0Xu=;MTelb zk^6HSedSLf+7+g`04HocVO3bsFc{Y8sXDrypgSN3~8}nV`v}OE5%Xmn^ z-|Nj>vE-GSyz*LPtr5*U89$}L!C)vs6;RqU(w^>h4f!_cvw^kwA>bk71Iy@vZr6<3 zYsT_xGrfj>r9j__IryqTXZY}l#&10Uk9Q7XMZ#QXMYo^{!R4c zkD}a~zy=XY#D5aM%3Oj}ciQues)vFBt^OZF-sSo*^GHvEGQZ|V92VIXpL)>G{^CO4 zVpams)gTvFKk#QV`q}SfnIItsi_QLw@*lePQuJIMEeEy7E->&f?aLU!<^~e<4^zL? z$e(Ovzkfb{t~I$>5_1FP!|DF^NB~YUUpUks3MlsAdm()|eQ~DVF;1@Xxy*MY)3M z{?<%lOCH{0iw*WYWkC=LwM+E_f{G3g6uoVu`6fZnGn#;H1M^C}IU}HY>J?$gnQ;_+ zi)F%eK1~fb&945{hJLf5|C@$>tU=?2d<1HxnD+{K`XW2&F|Wy-l|Ub>qQAcS9pVoG z{^G(y3sXgNA}zlRvkQl9{W5DDV)?hn@!)(XtQmB#s2Sz9fe!y~tHx6mKH{B$Jaa#otq>0E zfP}|vn}cm#aR{SoptrHJZv`}atP&upEtNmkaEG0 zPk-1oKG!xr*D^l$w(*bOp8n3;hFqRO7k#nKUT#DjC&Haz=U{V8|OOyFwRB{5yR!@4tUHnhd3K5YBS|0n=u9y%%%>x7BR42muT4ZV+KHuueJ zr$s`%PRqRTf|Z{vOoi}_sJG9|6JbZ>2t|jHj|$Pttz|Zo|8YlD1%L_=TZ9ts*IF|b zVQg^Y#n?1D9Gh1i+ZjYz!srR(r5@$Y#!P=px?2o7HLg(kQV0z`^t8~$7 z*InGdUMa3G_9?GC+C6i6-TKaY- zp2WY3e_VyHqdwHNA%5IqvZ0_BL_@+oY8MU{EyZ1Qrh5+=fA68`x2_o7|JxA%%XEL$ zh(KV~8LU&1vnduagasd3k@wQ|XVZ(%^2P7;7Q4q6|II&I{MRQ4etO^Hce;z~Z1Fpt z`txG`17ZDXhdnPMeM+rFR!>I% zq8El;vy5SJK@5m^Zj~$+V_gj*0OELFJcnW9~mj?$w6zUKtctV0l`8INL%l8TO8F@!h zJxO0=-dGNYD#ZWk;Nyw2sVT*e30-lLy` z_3?44$xO96qr^eTRSnUoz1!sr$NbU?Oo;@uk@TBvc>V7pN-(kZmpBHJ^i~v49(JZ9!^Ln*dE) zb>ogjAw5KiNhrlZ#cp@I(i;4t=Uu{sv1?GS<;RuhwT6{ySY=WrvIfdyvsS1^I*~sf}P6PWo1mU`&>EbWFHmA>v0&WKEigF@yo{RI$Rkey()p*B zB2T%9w`C&U)`fwQ!stzZwg;-iq6s_7Tex6F$d&`}^se0PA~Fp*7Gaw(JoA5Ibb|Ij z?#9Ch2In?6;iPn>{tR}kHL|)lyZor&21tNRJ}2{!ww5e+7V2j&^5+y35$1k9`HW0Sxh!SvWAsvZg6^jXPyx7gY{6x{!(re*sMs1e z*C-OuGa~g&ds%80DQ(4Aew^vuSr_##k25H8@WTc21Onat)Oj8k$tPv%qE)WB^4>O! zmsk$ICHBylpmv!Z?(a8J)GzIn>A9ZZ#YrfaC)e9~=`Kraw)kCUPO*;0>`(_09yBe3 zMv!ck1U6hlue!IvJK}Ds)1E_G*AuM;t}0M3{lJxt$8P!7OB zEXwMju9!%^?+)a{a50+u>$mvq)>Kt>ta)w5=sJO=nq)VViKZywsMI;v!JN zRhN%P`&c|ci%pGu5;k`nA;Ke~|AhXfNE7lP>DYsA5am%&@1aol%M>GEg=a4EOo!jy z;&k3Uq?8K*8bGEpdbPz7 zdj?tzWMZbrwo1`fLCLGyf0#|Gwy7C|%DO>9X38GL&~#Jej`((ANwK%KpqNioy_c8W zKU}+`$VKVBFlN&;J7V@hqOwWV!WJWfrk3>X8(WZ-qFPZ4*x$JgU>X?O$!^!Fu8T(F z;C`HY?z!jdqHlYEF2z>$Os1E;r{MCb20tS6{GVd#DK^>dtc2O(fOt>{Tr|IAns?;! z09gI3@BT-+BYWptHTA7p^{txmR*ij|hh9J~rs2&6kN~=#pO_VQ%W}Ed>;cM4@=y#} zXVvm1!>m`OUGt0Z=xr%*!;0Lt2Igcm)9<W21(kj2tnOY z#)kcoWSn^YuCMxW;*PRGapKY8IPsCn+@U@h@(n>G+L%KgJxi9GFNx@v1k#j^HOBdy zwWc5e6L;3vubPg!LC6IqR{#Jd`YgU{( z=_Od5v7sqXg9}nY_8|!t%6Q^G^rsBCB7v*E#ul=yl0^eLq;vxWF1SEipSHtc21tLz zlG#rBBQ2TLa1V!J&(Y8*D8|q^fWgr3?jJYpmVn-q13 zLpEJUKjr+Bc&G{fJeBuVf1WyW!d+|dri5#ac(XCtY*el_Sd$Y_o|B=eN{dCrr8~gt zSfw$3)a9$=l=B${gYnfSK$TE=&t+QEMtA2(>8qKDsFv$}3C8S>LEvKwH= z`Du++W*~hosWCxtSPjFiKp#_)-1h+V{$XytVI4cn0r+@S@MBHTHt?tzf^Mf0wiiF= zuxN{EyNrXt;}0$-Cd%N4zySV(JDz`9_3yFR8C5i^ZpEk@$Qnag^Nk@Qr1}i-Ok{XA zV;!pS4;uU{wx8iy5)w5{J>IOEP2+fzQj`EJm+pa!Te=Soqve+~bUWK8KC39!Gw-NHvn-spVFu6&j^p6A~lQ!Tez zt}mABtX$u1cj%3~g;j=e(;&WayhVUz`iOs`kjtO01Igsm^_6Sx;-(R*6+&<9@;`)o zLbnAGad5}TKs>z`;BND=jS7{BK7zkkDew@HOdcJGd_-g%7wq^SPVtp2V2 z6hcrhy6}VvTeQ0mUcIwC&?i{JthNQT{-gkgPpgz+5)=-F0NTYErs^V$4v?QA&kToP z?92;bc*eDm`5XtAAP+n6;BNJo{%%K&iR!~|e93KvAcU_%)Et^(VFVL>?C}yC`)v;u zVG%EVn~6DBIy3t&%}V07B9bIf{hD#7sN0ivA^_=&9si^M6~f1G6r&G&{ns#$q^owY zfABAWf&51QD8~z`EguG%u2G;6Uon&l- zU^gD(FzC`SbP-W3Qr2H0aSG$NPV-BWv*~ghrMv37NMqXT?xOEWORDUlb#S;oy|4WG z(7lALK`e5sU!_|uzg^T1BUgVEXpIA3r5BK0_GiG4Fi-zo`73PCJ-%#U?oejwP-_GY zTV%{&bVu`T1HqVK$5BAf$XbwP<1jyf{!-|A#!lEFoZoF1QjCv}Vv(OSgldn~QXB(F z2$gL|F4^%VmO4SsEQANxPT1^vD`Kx8i8OMHjADZ1gVezk73)@0f`7Blou(hbG`ORH zjIyC_D}BikGL+T2-qA)8VPqY~2nGcjR)e15w-IKf9Y;Lnu(ZvQs`puFHE>Di|uP%N$8eW2m~4Kf#z zO>hZrKj{C8$}nELv>QG`5JMMoPH&FvP$q_{An_~_9!7ZDzylS`9mYK`B{cMYM$Xm^ z#^7!Qj)!g+MqC~Mt%>*pRMnwBqK|_Mc<~W-d^7=n3Jf*|h*G1kFrHzO;b36`$Y7Z; zb-lsH4VHEWIC_QtzYr<`FCoJ}cTy3pNF65u)l-%b=py{f4eBDF4)4$|i3da|xfWxm z25dq8^__wOz(yFni6Si)yd)l~Oo=IvE-H^w)?XoWS%qIl^{C-~RVgpD%n7gB)dEeG z;Y-d7#9@UM7JT(hJ@JZxpFAOyeAGCfyZ^(CE z!Z5Ys;8@-FGW{k44`3iX_s|Yk2eT#8wMo>>L(+k2I68a84sWo~mcgp|G=<_Q$M2*kqTagGXEuwze_2|=+q~ik@W7m3Tl)?MqMQF zplPy;h9*2lJn@2?_zzn8tybbW7IF=|A3J00tr-bK`ag>dS5z4yp?()3}8DrRmF-zYl<6e8Td6p+QS(Gx*VzK zB|CbOK*)uD-%0!4kUa<9b&{CBavg~mZ4t7^F?$1-f)j6{^rOt!Ovl!;IK~f;MVn*M z+tT!ZvUcyu+MHdRuz47AIy4L{iXfozP&u!n*sXmh+xwnN%{(8!&sFYwWe5}W38ZF}t&{!WrS>prp$qanDbnCU z*Q!BF=kQ5~M{FKx@yV5#n~FI@OW2;B^Zuli=rH&oq`GdwqC*3r5uuHS$PlXhB2PQi zyvPdoCV6X!OZWCEa<^jDHz}p|%Wk6H+K0$ofN%~8=eTel5L=Pv7XMQ^s7$MPnV~k( z2eb&szm9PM(ESa2LqxB*(V7qv_SFQA+na+zpe7;>p*R?HCiKn_{SYNc)#bQ|P6+Ey z>IuM$0I?4tVB=!uZt^rfG*dsO)gzjSUF`66+W%D8Xr9TQylQz-C?P@HIQiw2*ax`i z&SY73KRMG{`*~?UmO?jndQsFWT0WIA@c)4;#K4vzr-46%_yGfEMYAbGivs`@?sM}d(^RH41qKU>om=qPVhDpxx4cOV?eK+3676)NxlNI4SdZN*DlYUw>ua>SOStvQ*qP7o8A5`peUXX@6gb)v&p>-zwpLo62< zGR_Vmq>{6#v>T}lZjTED9`DgI;Z_h2aSSlSL=B){^Y}}(s04A&>urMcjviW@2-PB| zxbh}a3B#6E8y`+441{PG6v^UBM_lHsP5ybn-)?{YBXjm$a($n=V%~qneCUcp#H-KmYen}lcLq-EA$xzw{$j{JW_2R) zES38&FlRV?W`bBiKOsBngXLKUPvYdm6+SWPO-wXqX9;ruO=I=ZtFR8Md~>hZ6!`}6 zpT%J;M2FZnA-5`vmY8+aOO$Gf)kdP!m?#yqrN^?XPtKNBzF5j1D`^p&;=P)W-897- zPS@DVM4k=e(p_n{nic9t@O4;M+byoO_*3ip$CH`DSWk5HCC?i@`q7DgM%Y+Sj}+Ct z=u8d9LF%82-o96B`(|o0AZBgk4vx*&BOK(-7UEM(;OLBgBNB|A6kfR%9BV#)E zo%3d1<};IUV)yh(er%FQUiV_>IX_R?x3r^P=FuUR=+9H05CH3YLi}kn@$yRItk?&Y z6gJoJ&(ys`xyJEaBa&;V=jqHx%%FvB5b~vMr&>=LIUR2=#OW}!CFJU+n0C=K)ek%L<-0T-h3pf7m*ggM4WcDHT ziDj{|sjZDw79hk7UHy5AfGC=$;;-JoJoTsQ45ligk3%-=U?PRezlN4wlJ<*`PlF0#ZSzK>qwNmm4P8FaLNAZaK(u# zWUNe_ZzOV!gzoJF1riaGNBtKWllRPu(LFS^6I@HA-F;PaX1kPCTWA#M=Z~=t z>f4cm8M|N#eLG)(zW~<3p>fCj=L=pm*8o^Q^k_Z32qLTlXnxJq_s`U6eueBQ@Mnnn zkgMfhB{M8PGv-j9UO!oPxRqMc0iI~nnv zjMeERzhh2($Nc?vi?k2PK z3EiFG#^)_>mK(FW`vv%Qb7QsJiA2uCQm)uGv~RyrS%{M~8@Qr5BU*YgS~A78_pN_r zB$+YM?MxIhv)w z9a&2}(@BKv#JoEZLXrV5o2X^2+7}bvvH4nLz6R59?DuNo$2BeCWe|w5>mu=+wOH6D z4H_s6jf6{8x*h2-cubLq8-Ngegxp;yNXbKrBkblvVK1zVVGJX1l|kxhHChp_kA%eg zKB`}Z2Xv1ArL#>9BT9}-+IS`t>B{Owdex)-avu*0cc_p2HuxIKzF9cZby!%QL$vE1 zGJCp1O{0CK>gqVZV@X7hyqI#@5!(oV^v0wv z!WTOca$p-*?iNZ)i@a^$tPnI*Y8QKU!zk*TbjU;S+yk-N-E|h!4nxc}^V(uB7TnT@8dBxG*ffv+(9R zPGbx&Hu?3l`o-HITG=#*^u4|o$Zr>DXSjc05z;?%wYQ?#w~E=f9y#=j5@7B`@gL5Z)j?&&2MRgQA6$m zqR&Bnzi6!h}5})Dg-79-DSUGhO7B_00!ucr8we{&{}|dFp7< zkw^Y1lYA^clKN?Yhta8v`gKeYm*xm2OV{O_@V>z5y)Evv_@(vKl}Um0_Ks4qc1_d) zo-s-VnN>Knwa}r(Ih*9{o82}nJc?btaFTR#-wKM*vasdg+|9_4(_jnxIfUvOvY_+{Xdx=NpP z(Hu*3a3_w6Rag>F@a|I)RN1QS7HFgcSFk?kyocd13#m*dAg3x}+`69L;&i_7=}cm6 zF>%UCoNCRyygCEpX7C!|*^pk}8_3`{RFhsEd?r@#^}R6H7KX)eqQk+YprLtnJ^Y$B zd7-lR!*z8*BQ5but;yNd{4E|y8PQ5h-LS_dkpY5XMH;#W^}#uhA8+Rvw1!6HR&QFN zbC^R^i39KAA)bD`HnEIz9#dmq+O>ua@JK_aQZnebL^d7&@96Q|#H@^ep3$(DjX7EmF5yi1G3Zb+Pcy^K z@+FO#=e(Kc#mx8CXD+n#=bV`rw9o~z3s@i|XtQyL$g`&HL$<4DHA)lytajvNYY3BU z7g`6P$_uIFhYCyl5ntyGpqr_*WH)3TvNLn@Qyb5j%Iz@iDono z__C&ds)bHzp_2ewscAQWPz+bIAmZ=VhZDy_FA;@+rC>CnIu{g0uo$Yf5I2n&jtHIR zfrEE=iq3yvbOypMHpUHzPmb>5{tkblsouQIOAUbf{w81E;>(WZHtunn_x#7^Jxy)0 zjYX@K{sdcZ%BweYVV(qlrUoXF4<=(iG+3xH7OsI+LOq6L;O^+;0()F!ih-j+H6>F) zt(4FiMHP{=m5AMnoH`wOfq(8Sj%csMPCBs{))F=HsRx_NbcsqwF1P{6EinF(&XACU8kwQ#1XO>CeL}3_sO#ruDHofF^OZFHVo}ji{Q-_ zd0k-l`KMn0Zi=b+{xB71N}>g`EJ z*hESo9>C1ZecE}*pzFx>)*X@bMvAlK&)WdBE{RjulQ=Wf6^l5h!%KHJ6SYmmziYgf z?XDQCIig1zkg2%SMU|9SkB%iNh8^M$yRWc9#$`aZ^y@*dSVj1&2yJo?i~pNXRPAhlG$sy=+ zgXOkZ?ro;ys5;8{1iQF9z|boM>O-?qUcH^>Nm!8}C$vKuBdj@ekgm$&s-3EOCtAC9 zPQ!RO*8c@**WPg89TD%sWKWI?Qj(D?w9kb{n4$dl5K^y)>~2}0blhaiR7K4 zR)1U@g5f7RX#i?k8j|PeY$r|=MqGfSAVjx0fKKij%8L?=TvNikujrjwP0MN6jHMgD zx;~8R)8s=i{6ufcKo-9~!&O4Z!yx6iF89`Y?yq0W{kTr>H?`b{XNY(ZU5mQ}7_v2~ zWTUlnc)k-JscV9|saF%KL%&hiI>FZI%_&Ws*V6wZIo%91L?z6m$vcBEhg>6{yDTVh zxILC@7(GCJ`ei>`J30118I{3s?p#CTb!n#wy|(dc>F^WPnx z|E`dCZT>Iw^Z)CC`TyzW{F__zYtH;>2T?)@{nNBbhE^^PVUqOI>Cq2*bucdmWfaiZ zx9r^iW+U2B3p<+Pl9wAMVBnG%UQuG}O2VhTH5zwUKHvSv`MU5yugm(RU0ELytPki%$g4M4jKmMP%>y6^`33q4KMF|5{>LDm-aOSH z+BtLU&fM!B-F>)-GTSM)9lhmH>YkRvuJv{?JE(Tm2MiFA)Y`^QJoU^=wH|b95Do!a z2o@N32MH?MzXp{@frR!`aF-&@zt3L79t3F#C}2i}TR|jL4%9~!gjf~q7W|_emAO{m z)e7$b`5qYyOy?gVCKOD2_`)RgBL^{J^Xq*6qBp0{E4$;+X5Y zrJjDn?dvys(Q|>?KoUmqSDPZmJ}+{AD{?n@?x)clro#p@V1PGvdIglPx%!6C$=|aMZIttBJ4HM7b{hu%7(B zYTc`~xmUmMgZ}!qhURFXtOE=&XR8z)_D) z4HI;~&ZsT1+>9jY{=R!4e6ohkYOT<>9}27Q#ko=)QI4VM{R?8i&S%o{$x#^*cUe9Iv~;XC)w|LH^X-&vmjH=FY}{%-y!7xeSX z+R;t+=or!A@J0OtxrO*4n|r-IcV6oO%3y|Ik3V>S0Q&1l<;pbu4slY0F{S>2HUKVN z@KuIe^=+2SvE*DQeOpWBG~6j*N|BLMW0c?lS-^*CIOrVQ0o~4gi_t?Aur8nOr(|r8@*m=dX}Gwo z^V#?3ufpu6&7bq;+Y0^sTzkHbRZIfPHly`@%wS^dETAnNoIT_)G5LC0l!nPl4O+=op-`p z&G1$&++?m}#W={8^_GIo{J3B!R2Jp2zw8ZBAYv|D! zf(nO6eTOIb^dmlS)6WW#T^CwQZ5dqcsIAQ;YfLDPb=wP%Ig#fb<%*Mf`ls4>HCQ7K z1J6R9&(#rnKYw1#|1dxQdVT&cB>aardIfx>o?p~qfkn&|Scfq@*)iytdWeHgQxHAT zPyO=z%eZe53B3;v-EH1$Ulp4j_4JRzjUO$njP{R@hLE7E47vT+oOByn9&he8G`C(Z z$Nd6!%HSb;zNE!Zr1B3cnLuU0wqUf%vnNkj%}KTrt1c(mqt<7g7<*`b^}_Vc^W|IT zO=}%2XE2=y|2x8;2hV{XmW8o`Mg};N$~-@@6%-Uwv7jaIT}Nmb&Wy-@^2Xe|lbK1d zoS|z^bR6nI1sY#srv_YAh2}t8qCxQjoe8;}!3~nW#cL6sLXrkpIq!I(;i&l@VE`yR zpTL2`Ih>#O{Q8XoU8K z2PX4!fJkWUD|UDSw9(#OA6kojzjwL(2jxuvWlR~LR{Qt55bka~;gaJ6dLvxAtdtt5 zRnp-PItTp|!RGXz?4LbowEs$^*E9e4!5BAyAPlg0xS; zi>L)cCZ#Ll)8V^V;8;SXYyPz$cZJ~<^^Q&85%ITzCX#kCZAol{$jcO9Rp1$+Xg|`EZ=yteB)n~ zyZQ1B?f8vZZhf5_KjBCIJ06a6>}mp+oZYf%QNyY&N+kGqmj)dWC>%c}Un6cHU0wr7 zP=q2b@gaNag^u;1_@7 z&~qIsJgey+O54ysYWns5`-H0BjntVaOCB3UgsJoa%xBJSfK%)4hruVqXdv!6?2=7z zik6#RSw6vR9egB<+evahiDSryg+oF(E^7$xVK8j)qX-v*>ui{j<5Gi>?$*oh zQr-?-5)V*OPxi3-xJU1P*XE_22#pxM2KD(8l-`v?Op1+C?@CkF@V-h$Bro!8^nht2NVZWmQ|Fb7mL55Wqpj03Mh; zfGT-UCYj76KgHche%cXxjHIX}E0yG#c6RR%vUlaOot(i7nO~3RlXfzp5qvtEyk{W^ zud#@m+{cq2){`%;XQQobw4MFrf)R=T8a&BQT~VjgY14naBAU&_x%%WGfr!z>+bijZ zClj~WOsX~Wk*z(?43|7Ehpt|`dKN39Lx@k74Qin>Y-*4+piP(enQmJ<;>@&Gj@l#Q z{80ZS>OAq1+dDrOj>n(K^K%17=+1ps*IpAd?~0|kn1V-6@Cx>`p`{^WK-NY83hY)) zOL`jIER(VI{B(h4%W0Ir+@P;_aRE*?q)bU z-W~Nb@8iM0vt*}|NN*2EpgwO zWH*}rot5jXw1fxf84tpnz$@ zTFEYPA)4>=w$^BWvzEGlq-6siTISt>8>$(1?jkr++9XaHIRTk165n_8uT+9 zkK0aC?XBTu8F&B_Hav~tb-$$ zbnWohxZvID#h}sJ=P!R)0TsCd=4lnTN6_?Ee1A7|gt0Htk_XGFiZA4niaTkcWqE)T zOKNHul^;}#I}xFL*}4>nt96)ux92eF}6k(2ghpgwoN0~*e>?s`Jg{~;AoZ>wisOg=T9jpI;h5+wXuQFjgF zp}sO?Ogbb1!+_Ecx&qWn2ba<$V7>uBtI&f+pq_@Br6Ijr^7Px_WnaF}ZXRL{l{qS0 zeH^D^FP7LM>_AG|uo?#P#i@W==I+Ly=hXA1LQY|KD=eiD_Myw)$H|%*;T?M!!v<;dF>`d-jR+>h|=l(gCZ4KTMPAfQ$v`)^rz~2P-?|^3lQa zhmi=rWGj!h_@nv!R_esdv>zvb2}#z0amRuJp%>#0)6pm@nq`ckxgf$YGr~m7jt_84 z=x-qS?FdyGK+MzPUx@g$h@60olv6^spTg* zr?l29L%r;$Nb3*Po@all7Eo$b%prx|VL*-Yd&wpe!d<}r~X~gkB z5vc*d9bG~#T4kYkok-nX6$|7L61=EuY+?%-hZPoTv9t|mBb!BJPLh@Ja0`0S77Iax zC%wd1SfoW?j$BkF$Z;N+cO`VPrFTy=%FrRw@Ir*5Y{p4{_}thcmQfDY!Zi1WZ6{KRrWI_%ajvL`4&@tmnmED6V5W)JuBWNsR?CmVVr+sFv^FXKZxwS^D z+epnc3Nw!#?>@h9<+^|Fs6_! z7vL*S18OHt9a9*9BIs%W8krIZ3<-`gga?#7P7u@G zgRimaf6L4z314Amm=!_)ekb4QK7kC3=qqre8V3wi z*(mIqU%|gaGSY)tUVe?he641NZ8KsQBR2mW(!=^0V%K;AM!0r50v`Px$i&}C2tP##?3gwip^O@al-7-NyRQ_CGN7+i)#>gH2 zkj4rK>ELpOH}b+cJMKKMVR;(4F0#-iJ8V0!C&K?Q-F;8f9%05J7NC&hM36ld^~|$q z!$*=5FlsoP8OZ;`7mYi{0#TL7dn_4zuzpW&*;Je)@mC zQyJ8%|1gLM9F<_4tnk123eUa5=M0?jL1$x4y?UlJb4Kw&Kci?-c%4FTOArP?jM=%U zf2^KfJ!bHO2A{UPatkSPnQ2CgW`Ub+e%#^57&o!9^&s|~$L$>?RB|A1Koax922%{+ zYzc!BU%{BgaQ6Xe)S5J2eDf^EEAN~h-!)!RZXrC%K1vy#xX#DBoLxB+dhRkJEaQ0* zeX32wgEX^Sf^QXtQ_4G!j&~h4d{Mjl{ibSSS`+1UVP14iP54mshr9m{y${$uzvLE} zhiKqpm|q$%uM?OWK~e9STKxIiyZ0XkYt&z}9Zn8NjcExm6PS&L*>H+jBk6Eu zoKP8+6J#ZclgB4A(^+jgJ6_HTa|yuBuSAQeB=Fpc`QTyj8oWb%EGwp^nZN`p2}MF; z6DSS=#Kcsd=Tp25NhgSgk%cirSvXKJRcF)T=yaHu!@~S@-Mp(+MEZ~9A_c?K;st{p z=Nn`E6v=NqJ%k5>F@S_^Ss?zi`^h+qHj(#6!_fQl{SNd4`6twdD-kReafQKX3{+Dx zgA<-8T^DjISlpP8r%@+5ywuo@hw|j8Z8b^>aLN}P^Qc|kAa-iTTg807*q)@sQ&M`| zx$C_r!G?tuwnzSZtm~zaoKCgPyPYBw!=-#|Yci&cfu*qVOstONHX?EQY{G8L*qit5 znit^A;CNsraow9X#-IUp7kw{OB?-zt2~Y3}TsE?~~Dr2B*e{{RX9U z)mwTFaxo343-iOaxyVe-C~8LRGaNv$+=D+t5X~n4c_a2gBlf*~uw6Yml(kaF+4Q+K zowWRSnmMPL+4Z8<<_{r5wZ`|a^ZUp#KpF}%yXB1@9quQMmI`|Qu4aDMD1#Z|xFzls zAw>BQb$HYlp0{{qi?=9g)zC#1V*0rboyU11#rD6!zWicn%Ta5Uf+%F#I5GnSHXa4@ zA>uK?H#Db|+08flb0=oGYM4!fGXqc=W&n!J!2IPIgTw;}4CrOV|Ks79!NWrpqUrz@ z$+9eNxd+YWwAn11O>?_xn$6-Mw|Su8cMg6Syl51oj7C50soL1|D`Td$X|^}bb%LS} zF3|@n`-9FY_jkx0!bA0Oxka_2c46Itoe@n7%XJ4;9dN>5zYYSA6<9BhZ%-SX){EoY zrfC*U6DtP+Wm)G0vXi(`cUYri?o)@T3 zx@SW?n0BXOar`V6X#+!0}RkjC9LZ}>}wC|WL$*gWEJ6$x3e??~|* zabnT(S9idZtf&(r_8RJ=$WHDrrv0wlMMZT!oL9ETe_#cV=DDaI?B1T{o8{=1DYndS zc*RG+bupS6;#PR6g*inKcX@RIna_6DCuVsdX0!|QbQ+V?Q3%rQB7?ylzm-E4951Xp zY7mXghX#MGsG*8Q$Zyl@wh8&?LvGFx(E5%F?2(J0vf10h=eKx!i!Tn*GmY0^a5e29 zh90D7d9*HLbO1Cur11B*EOdu+0`L!2M+zZ`E$qO-xdAvR8q?iIx!x$}8)l)w7aIKc z8~pbuTYIeD;B~y_Lyf~BEpYYPjvhd67GWF|#&p~%KZhmEF;go=tm7B|S#mE>(qt?# zz#x?|`1v54aZf?#ucvRz^_1j!J5U!Y(h>k-J3%9YbTQKrXZkLqJdrn-;^u}@1pVMl z5eyjwt&#D%lbqm-2c&Ntjbnv|twJiz@hEHJh_Jla`~zQ9VAfETNS^=vB44P$JNm({ zcd%%exqXZ~;EFU)u{rH}v1SRYKk<3;j1oNnuXp5A4B#r6cig{JuhE%kE0q{MxF@Vub%j90nvr_xfN$~ zl%7EhL_DO2i5ude{C+}=&yX7bhK-J)Fl9b}w^1+$q>Cen^7R3A{=$Ws`qdI=j zj;+5F)9Nu&Ce)CzpYl-52D?X+eP7W;jY2=8IYiHtalnL>4yx#%))6Rx0181wG+wfE z&_5^~Gz9gJ<(m6RqeV!*LONvHo9H|JL%b-61xUgYFuxpr(Bae9yfR||Q>U#Z2jJ&H z3Cbsx-FP&b5ybx=X*}3y94yqP)3x%Qfx- zNOgiWqIO}i*lGYC1aunHTaEHo!vu8bVGmG7u+9CPFLVAQ9y?WwL2)0r`1l!0?l(hD zmAs@KyrE6c)XRxldE&IWN6J4&ksmAar3S&VDqq1Y>&byTXmB*`N2Hk-IPT=O5YGwm z?Qu%o8UWQ`)7RPu9CpA49fE0Ks;-+*l1wA&Nydz)G@kxE zpZ*DN+{0^F%ZDf^9B%2qG{Sq9!^(1cyUI}6h^zk+t|Lg2&`Mu#v2=lrjWJA|tCi>` z*3+{%F!T=n13L8Q`;v$+iGxdG+H%X#14z-X2vXnc@V);t-}`;O_bN}^=84n%skPYk z&DhCdxdl4+1!#Drh7jvu%*HG$$LeORUIx*|>IA@cufy+c@pan+;kA3?zc>Tzb zrD4GzQTj>kpB7_UqqS7aPo<(5`lwU^;lyOkS-XS24wGWeZwXhzk0BxOv9IQU6i3m(%oWjzEey!(JI!U!<;uc64yXB3-%8W zSLC5)z2%!&*^(ep97ATgMW4kngEND8^0<^bz(V&xj%^L$fd(Vf+LMN^&B;TRw8h7^ zID^`4iRaYrThcyL_^$het~b`{TSA4CmwUCK0mLU3$}J%n9n}OZ zNQDl^;3o<(+8Pk|3tq&3fTszGv>5L^_Tbjx2e(#^cQmsJSSfbj=9l_B6I6uGlrXyP z0Ez#VMW>~xM~DcgkJQW8QJ;=^L{i{WXZX`s`5(6VS6?9o+>g)lzj;3P*EWB_9;y!} z1pw3&6{_VO%se?=I9$HpGrRAT=!-5rbRl-@clg;BfBG{2?L043_>99NHXm9pVBr+j z#}tU9-)7ky%g%N5+gdiK;Z9LV|IiOX5}BwgRnV8OYR=mg=k(~hOnlypb)2~7Jg7Mb zJI?f<13KkSv;61H=|6AA0G%e+2-FVNK_3KIaj;$Cs5E|w*24w&zFW2M5i(;kP`xmXgV4UwFmJ+M zz={|Jy}y193jIYbSRZ1}{`zIGc(;9UU7OY=bCz-xjj#WL*Z2*rQ#H=r zAw10CKXQ100bFtfx`FXC;USW#WfR@Q8E83G#!Wf&nvMD`^-hsK@0C zBmD3VeBPg5+<|xvdY*>pyG`!prWERmm{WLx-s$lD89o7pTZ%8qExbBZot^%vzUnV9Dg3z*&h)e;|0&L&3-%5s1-39Y-wz`64&GqXfG*Z$X(A*(53{KR zFgpC>*Yb3{)a6F(%oaa0j0fL7r* z9>g(qJ<2U5oO`>SdlB(>k%9tZ7u^`{x*LPXU^b7+pr5g}O8MvQ-E;_?qU-W4QlYag z#t;vVGJS*w<8)vZl7EZR}4p<%}HbMgeb2j8k4e5+Re z%riGQfM46@mumd)YaAKK@$tBUNrNmT3bDf53nTknNr+@26{j7s z>4+D+#J{$a7v1#FZ8~4$+cv=qm{e&7ssjlD z+lLm{Y+|ZEy*&NX&FO8gyu!?*u4!Pu)8SZa(02cR9R56{;)uQA#cH6bor^PCFCc|l z52NpJ5>Pw+MR$JTXVbrD7JpoN{G})OVOnd5&%2cr@x!Zm=lP1WHXx7~GpK`6pmNkJe~daX(t~Q2|eRpKVS^JXz@(1w1GK5AIahg$Lw^$_Oo$SHE0%+btCRL!Hg4DBgYQkTm7S?J%~I0K|k*J zFCcF)0ha(R^)}HDYHn;@l7pd zvdRiGcHxOGN@D=XdXWT0&cxWbP_zVK%@7-gSVG1OTZB*NBU_rpV^j*6-FWx_PloW2 zlLzpOi#?hMBRa_tNc%=`S_=cuvX&|s6_Lq|Hj91P_gA-d1j1+tEq0iSePvWXRcA{p zY{_Ov5z7X}AYxbWRTNobLm%<<$unZaq1Lw-P|D~Q9Jl=Ypn#8Tzs)q8WJT)97E{3q z$Moxs@qY%M0X7{0DcPE))gW!saKs!I!Op9uw;F;psXLcEd~;p@q|UL6#Mbh<&B4r% z+iJ_^#u;wZE%%*Sr#;(j%{CudXutnZ=zaau0)obOP{p(MYHnNS&YT>=)2c2xq z*}r`m*zP^sJjDOylu=1J#zcKNUbz{)@q_SlsmT$*D|lP*rRps2TpU#ic%RNrS0jXSgy*u49o-`pvOr&#zVP4Pp$Z^tNwyFwbF^qrDb zD$vgZ(!Ka)MFz#tUGL!3Fg;{144woEQ=y@_5;U-n$5n*To6tT6pefX*SP)_=_z>l^ zi-*IV)5ik=K*m$=)CZaRWPNghYWUwyS)IudEQ9)3E_}oE^Fo;rNq;~esTm83 zGo?66*d{;$)=H6|s-z|thZezJyMROy0DVm;C86YmGAWd}h^&c)$oN$39fh}*Xh9JR zvq^ z=R5Tewkqk9G+r2;V85ZfyNgJP)CYL})9JuItZAy%sYY1wa||j_T6Remt#B<>Y{m1t z+C@%B3OrO1IW2T-myoQ=YAJg%${rEf(DZO77dDiTql8W?;VnhkR8r{MkTT$l>SmGIck^Dvu|uH(TfQ9oNWxd4O*Xd{3{ z<%L${zt2|LF?ao)}_LR^j5por{{1(w&_i&z+ zGSdg$i@aJ(zgkD=C_x7{*k~m~@O_yL$VXMP5Iz{@Ppod@bMSCXNLEKLF&>syx>P=gQ*vZr4KQG$>+iOCx=;m$RTGo zoN_`@MS!%YU+77J#w(P46Ym>9nD6Bx}|5lRjSH=)Sisuoe zK{!QmXW$`2^}N%(=sBXpkUg$h>+t31kYT#5@$*{jyr#aURkNB&ZsF2qt@ZB3S*kc*)D!ff9SXQhH4nK;mgiRZY=UeL8mDNfLdnob>2!h@&YFYsq)&kd{ zG8o(*AM>k+`EIi`j!gy)z%4uox;v$bNe$C==Yl?H09MVQp6ow~)r>SZXuL2M^bj5k z!e0lgi#r(n61@YvgUmZ;O%{0W0QTT~tHG6;I$2n_`#=@lUV^o{#@A~8YsINzVWB#L zXs2DeJJc>PZJS71m!XtCg%4id-OpjjhaV$6vlcdL=}Wb6f~z<9e0(JYG5h}uAES0z z(0Cghr|g9=Qk;K!mfy9`lPxv5xG-U0UT}D~%E%r5-7&6`99!&qBXp?HswctntTU2{ zC0*LdXt) zF-)0wyXYz2g>SA@KhE=izYgz5>DSaE2dC`W;#|C1*b`_L>$l5=GR=ApA!8N3B8aVZ zJE|>oCaSt`5R`Y6VSvEHVdq{Tb-JO`7n zZ51P1Rpr?rBH-a^mv^aw7KXL!?Z}zk&O(;fi=r=l;;X^9cRM5VVy`XIpVVhg*6%x6 z*FUR=PS(?&NWdld!U~0oKu!pV90NIFSNAY7NA^ty*3US<3>*D6&vAk&u3Fnwg%^9A z-{kr>*Kp!Q^bY;pt18u*=7qjvEmhaWs`LsNG>5Em^8MnkqGx=I`EE$|i5}DGurnkS z(i3)dpHERZ!$!h!o8S6T^^zCtWR!VC`X|J&4QW|go`2AZVY_A%lZid!EtG3j=-CDU zVdcmL{6#Tj7l!2o8ZVEcRsmMO;6I6BU3PfY;U?z#Fch6))fpNw!hCX#n~blEcK^itIs#A zLx-!kDm?ZIKeWzEP0p|K{M)>}SzNRWSl$Ac)c@H0$XW0l>&R(-WQ|*=V;_2$Zt5Pk zV7XPvnutMJJvN0x(GYkZK+~V6l2&QlY2aMqKVLf>`%j1UB~iu4h|MDoY1GM;TEO02 z+!!0>W9S)uoOp5LeXF`nHlTc-S5o}i?U?k;r}Y%bfl6t?puk0{2rs9_U|pz8@AP+S zmQL)Hfcl5U6sC^h=q|5lHinh+IJaxNu-h*VKL^i@*tC9GFbdSj=jY*d{!Lqr5ML#< zs1JrCS@B)Oi>D}5Hh9s$Q+$DqiplxjXXYw8s)`&<)g@kB;=S|5P@u9`lum*pc!>X) zo2a>k`d2S=vnipWRvWA4rfF_*AF5li?W?gGQDl)j)!~2;s*f(ak>l_t$aodry&AKl zeD$zeYOa3c#p)_3=M{dm#lNx6kG)7#RC=sfDppq?8>$bQAE9_y{*8+Dp~F=yD~$F9 zE{mnz^b)J?m;Hm+2I~QFbV14Z@!K;Qf;e4^@vX zKmPN-}7si+-$F%@1)6Ai-ZpY!0hvs$yAJV=ZOJL0xwd!B^GcZ8hp= z_4qmO8LWqai|T{Uff$f(Tk=k2$jlbGp{3EZJJ}tII1n8iCvbs35J0pua9%Cl38=uZ z8Pr>>YB1C4F-&5c@CI?BMOH5ir=kjS70YKe7&TOq)SKSIR1tD-@n$3Te}11Y6nLo- zd$Y!$|3Hd ziZIL(V6A~?(U-fN6a_FUz2tAL37lIe|q_iPb+t!Ec(cfOzKmChv_?P<4 zT$nF}$ue^1b@>kTEJ==r4DAXu%5R+-)~XTL>>{0(LBx!96VyY_MDQWyab6nV8_ zeZYC4%F7LYg>$tQySJ78Vx@Xx^6|GH<#~rM)p=awD=mnK#f8xW(t3hr)#YCmmfyq6 z0)HK|mDt7G$PQ73gA+Diy4;1~{yCU4*NQW1&s_I{{X?NoCiqw@)^%2~Z~|xr#S`LY z@oKXwqrhU_CV#BS4>bAFI)AhN_{sXyAx!(73*AD1o2Q1hazJ*&id zDT+W0x*vs9fGO`)OP7mZEAkUJn&9|DE^^gC+DU8S)5il`_r{QOqw?Mb{Y5q`? zAFA`YW~{K1)?KvAMAI;oTaWO~Wq$2_?%ZE=?k|kUQFw=5qs?`1-$W|$6)46r-*rm6 z!ps2?`hEWYGWPC4Zd~WR;K2ZDfZ@S|(XG*era29o+L3p6#y%iq3>eK!k0b9$sX%LA zZ~mY+cQ-v68kEbR2wGLn$R15MHM}F{26}i?l?5%@WGYqJ{Uf*T$jZu0g$|n<1{#-J zkDFBGLKba8mX>lVv<+Lna?5H0`}?|QhG-0Pvt3^`8$k1$^ZZ`td*DkL%EA{d7_1gw z5*eHnNEfrCfA=A?d5pLv%r!4qlY zI?WgPxH|kQ?sZ@8ErmuJ;Sv{#CZxZEz2o1fD2fgI9Y<`@sFCiS2Y-+E{uTaCVHdyv zJkKLrER@+0s%V6=Ql|vU#a^iiob}R(ZHfvZvf>&uTbN$9BJnJs9BZUSTf0R1a*B;s+NL+p$-@}qT z8te;vxg_bF_oyGPzqD31)~3SsF9;8{7DrB0znkyQ(Vi{X{BD*$>&`5S$FIVeAV`M| z?y*_O>PxWngfA#l{6?3*O|3F7`)lc~-=h_UrkZZLO?p8UeBT5a@$X4W!BKu}b*UZN z8nk6{Hi_R~kmmOUcsEDLGxd%o8P}GbrOLJ@9z1|XagtXbS?q7oX1_2*HbZte8Y|pi zYZG0)WTh`zOIO|U8-0GBCynHpsmE*Zdk9@{hvt{Pm#* z@{=3*^6^OXXpeYJ8u!ce*d${E7#4x`Z53ZdH&8C|Go44%3mfgUPyoMFz7Qy&&4fL zRFNV}g;vGn0s0y1;b33p!6<9(MS{9yfi3?ilpA^3s4F2Y!lGhr2MA@lbl5 zfBsDJ^gLH?$71x=M==w$&-Czgsw6Ed!EWaJSa7)8$@^=Ud4et>oR^>+PD8a3W<;zuvu!qSF?frCi0CZxUR$#ugb(g_W-;oh zpX~&td!f6<0hYy2P_;+40K>YEK_w*YZ98ha8k>SqdGJ!`guuK;(o`btC5Q@3p-SzC zGV^{;t{V(+!e*AuPPExdEwWnLb4E>k>XV;zVE|7=Cal}&LL#zSfS{2Yn;duW`8OgFrlNmSshAmx9O<8Mgi#JQ-|Mr2~tZYyuCr4~wR zTrHutQ}`l0D4+3OfX#~zWz23Ss$`;Z8BJ17awT#OC+YEy9Yg#njI^i&J*nn@ih!Qb zwRsE|Vde)wDUYNzd4_^}uAYmY`63sE(iLdk{D_yAAb zch%r;c?skn-a~5C{s>j~h{8kQeF4lP3vy(>eY`cQZ+Ml3sW&fe9rvZt;5 zQ{DN0e@g%GlpHxF?`%x|uu*KaimlHSTeV^QmYW ziO9++?ZZa)n+?rvMcHSftY&tR->=4VhvK#q`T44@4Q2WogGXwQWhrgah}FGa{jF0* zBrzL3HS=Mk=#S5g`yu1gQzFe&9JLUz`1>vd)e82RN6lyNVdt_- z8)gKRw!DeuA5R>4_~^UUqvm0lb)z^4>$xx^mq3oDfZZ}Ld8Ixi3hhxD$C2oqsNUAIN*ff3l}PXB7@w2mYg_->~Gr@8ay>z`n)- zBs2V{#`NzrCh_psje9N%{Z~S+AR)AnL!tK2VVvI*^XgV86ZEf%M*5Wo--cdS)I|WY zE&xWoaesZWuQ~pS9`GcXc@@V)zFh^zv_I%#cEB?DS&yHtCr;PJ7Rb}}+UX0QKVjV; zw$BIL3Q|pwOPQS@2?zEt3^slu?rE@1Fgwi7MeJPE%K0U0?OV5}=ZC1v49~gzZae)Z z!k&lUp&>{rF(D=~7ij7*^ylkhRLFA)N@T@H?ieJE8 z`Y>oNkD-t~}iU%%64d$4czGurDa> z=dNeXSJwD#=SU!r+B|+P{nUAW`V9a1(=baWfWb$C`z9W35D!q2YKFDh2bi+WkK>42 zfC7(`V1}^lh+k5C3d&yG?Q6^CBgse@CBK8Qz$#06pGQ8(Kpx<62v1O&d=z5Pt?-~d z@RSaMv$h|Czp*WbZLTE@Nk4?!bZb0Y@6%FTX6#KCISpO4Gb*N__L3S02w(ADTM2sz z2fyDG1p_f26bv#IsvKJGGMmYTk>FE+XB!nh2CvZ6LwF7-35@o;nVPjkt(|W#7cBfT zc>Oo}g(iV!= zGHFl$U+!&90Z2B*uD=kwUKH8?)7{e$`KQ_ZlXm2Ux64xF)?jm>VG-Bx@4*AT(P7$? zo~ZC`(5~_23ZHE*MVc(WN=euTu3!ZE$02xuh#Qz!&rR(YrHa_s6w!JnB{JemlHJ!H zK!T6Kd~M&EKk`HsXUU@n!--j=-0YY*$dDRiA9nOMjy1wplz2Qmqw*+70r(S{e@^D% zMgni@x_uK)+2k7CXv$1e$|h@jY&MJse*rOZ5k|gP>ykfI(y#z>30lnlwR3fC@5BK_ zJKw}N^iCzCRu7hI7d!b?nLjD@y3Av!Eh?KsaM8`L34M*^4XGpC07XB-Glu3RE&Y$I{8=~u zH7ozTmH)Yw|1(Pmk`opIkl-gQ=7!Kib%8@|!H1yb+xOsS%o_gQ2o=Ae1w|jBQoU4y z8igbVf9OpeVIetl0MF)}!l)F(VbfMP#*ozBMnH!l<}b^I%lTJ7Wt8sn6MWxnQWTlz z(;fXfi*g2CK)Y_}sM{+DG-+)AmF+dNO~CPR6APZG-BWtDLsQ)ICmIh2yE^82x>5LQ zqwxEU!si-=(**v!3z0qt8W#*K>Z6W z??Tkl6-z2@h=#1BvNrr;`my-Wrl&9P0zh{M@!*>Pq5l&WmGtQYNCZLu70?aSE5Jkq zzys==pm*3-0;M?w?XTcL2z(hx0c?vJ^kdTX4$_Yog1i3!%K>3ScLXbFUZLm|?yBqM zI)p=s^oG|U1T={94qWKhc4LrG1fX^Ft%uE?0w8gGvBE@u>0rKIhkbd`AO!wHMY`N#g zU+^<^!xyUnZ>w%vvV%71W8vob!w&jv`ZI;u$FN}bd!CN_op|ULtj)2~W44Sn5#tS0 zNCfoR3S-(_KeOn5fprUAr_dzOdrl#;QHVTT=zg@2DizdHA)C>AC0NH*Z;tkmuIE37&$*WIPX43)4>-mdiga*0G9E*rPH0|UjXFt zFUb72GWuT#SxLwv9=m#(*|BhI5FYQ(7n*^Q3|1o^z)we8g(a#iL$fwBTln3LLidm^ zYjSx^-t}en-~A)gLR)N`sNw;;2@{7u1jzw_e3DTjILI!* zNo1TE+ms=A2m}g*Tc!k`5xn@ZgtDGcP9);J79C$jb`UZ66=1SX*SA3rp3i#p4P4{! z>+|((n18-Lf6<#?(~I2VpeOLu@_R5nKC$ zXf>7-?Tc<9Zs{uaMW^tfQ5fkIj+|deo>@5l^rw$lgLs6k3!4_(UA7O1W90<~Ja%E( zE>t|7?(`6RT&P@Ls5HM=dG*teEcc_r6l3_&HSpreH?QL!f3r)!En-p0sM@~-l;{g(sq4k##81yWyXHKr zY#-eCC!5;~lB<43(B)3QURi>l>`pwin=G6M5v)_oBUU2H5-BE1ew|9%Ru~EBr*GI% zI!m3xu@Mzv3AcyHk4Cx!Ac(vmvn@Gi+Ua$B_kun0k=cS`6qMY4F86a315%?h6|E`J zTz{{a(&t62Uq#qOBIQFmn$T7f!|RFRxkPb}s^E>KP|H{-svjPb7s|fS*1)+hI9J}ybED5ut@dpv-&o34x9ju@%3+rck5LlzeREYAdS{Fl&mvtJnJ zOB8jr*%;psmfC~H>}(GrRzhfkljXLe7zi9QoA~IZkQ)R!ONW^D1RGvw#dTJ>k5wXU z4xx4o;3$+qaEho<--QNjLl7s0Gy;HhzOLo#!_QNK{YsvIqNRd>slbcA4+$PO`-OJ; zry;mQ5l+RuG~!HG`EZjDe=2Z2=3@!Cw>3++(s;9v`!w)`zXrU~q(U?j*UTq&swDoSn2`S580aBd?Z z43=-?fs^XgB3$!uY6g}n_K!U=gBzbU38(=KdNn^fx8qSW|!k2WSh4JN{e@ughXujxmHE+DZg} z2pE_$#Rl?bpaEc53eO>6$82Pj5{y0|1kbLM?9#<&!)1yH1k`&~3zY z5Ca9I;gZnc!&kjw_)G~tCK!NhgVG0sDaKY){C^2UbWK^7N?Dq93BQX}02pU3@2JaS zT~;{3Tw*KI5K+2@RAyyABEp0D@{<=Mng9=|tPFrNq*gbE9ivz_irg4ejWNGWk5V#l zI!}=6M*~CgHh5;&;RguR1J39HM?2t59B{@z;#41U$`u0MBuJk0l1P0VLesauK!0q3 zU7XSysca*iZD^+(cbskvztJe3Zj5P-F$^-2A_Ne@!;W#*T$%_W%og2KnhR$Ln2WTF zUU8il@8gvrf;oj#wtnvK)>=c!xuF(q?+gDSkf4&M*Z674-<168WI2I95But-JuoE} zr-Ztb@6b38v!!2j{kW)P5R5WMIchggR_dq3*P$Hr6@%z=m=A!+D3_pHi5ZpB(?`X(k zi=d))Dnicn2ee`bg__gfp055T)dEYQe$#%IUhuSaqVq)R??VWWH`d2_gI(E=iP{s{ ziW_aw4oU&EZW?}-4P*5C#_*f%;vodmE{%ytw&Sf3I*M@STj8-3VVNx(amq+^lM-G^ zvo&E4H|%0-c1+AxgfTbLo}0N#sokTndldZ&j{QS;0_vTuLrgN?pgV*mKw9&((;$XK z=g0c_P9N(D;n_O3!hD$xidn~GrCcX{$kD{c9gU6R)s0FcQ4yd&m=48<82l>{tlf_X zXAzsyR}k+x*;Q*&?a0w@NeyX}Uyu{eBi?hZoR^3_guB`%Py}eZA5VxLUIf8ssSM3N za>8g0WB8O&+@QF~N&@TI1}G#yTRZs|%@^|&{dJ{~G2hGJp7KE}WV9DV@jb+4iweQR zbA_t1P$dkH6cvaAv;EBpqPZ;!z!Wv};uUy{q>kiZWBSKWLTkSc9($(wTKCX-!)oLSpqvfHSrU!bc#^)}b&8HpkR zX&iZf+Z|rBi);26Dpg2(ZtFFQZTH{bMuG>zv+OCLQ3^M|Ii(Dbr^c$OIVZhZ*Pd2~ zzd2R>(`uzytyG-3W<7X~?qg+TW~mCmyGA0! z3>|HN`$t6wA~b}D9Oz!(Me`1S5|AK1i?~tjdK?0!%%7%aV<4?}^t@u7RT8YCxpM;P zYBER)OfV#sXuA&$1UUdYl|YlsRb){xQoSz9r9l(b>TLL|H#x;B8?5pS@FbK(Vw27f zWt6aLN#ldY09%aw;*0<-5TCc;x<5E0W^OZ%EN3KsTfR&m~{d=iP1 zx=O!@7_s`>wGSr0>mjJy^v+MLFR@wtG)__(r{Wx?a(|Il%$MyZ}aBF&0C3Fkf4{4{>A=lW6_G zDb8oj!|2xu(oiapd;c5#f(T>4oMLlk_ucUg`DX^{WqePBj=rfC(otPXEG>%Ez-n8>mqi?Mv7lf zC7S6wFKh2F4gUozzUG1nR_-z8Ds2TqDInERre>5{Y;b(i9c7vLwb{nn?xqX|NFQ^x zYHRp;u#y+O{XavDWC= zhCb#@k2w?FW_7Gt22`4S?h0?(faI#3RPFxu5FXb>^fY2UOdR7$Lq)n&z=z&w!kBr$ znAk9m9x}>{RI7*=;ONMB6&`CtNh{PZ+NYRh+ylR5ly_u`s$URv_n3OLQY_i5X?YMAW_`V01czqqAG-yUbn*79M(LqAy1A{Q^8gS`3}}| z)FV6xg!zI%V(Qd9PtCHl=4zH4w%f&sjm2CsyL0`UbQftW{a3(c%%9;rx*b2!Nw2p? zDpv~s?$w1-6F=cil)xsd#V4)kaVxs_2_=b?PpgX&FV~L+jR9y|a&Nx9Hv`7|F>SXej`pl{cK@h#?<3BmYI6a6&~Fd%L2Sb*@JpP` z!6Txy=>mZ-`z~q^=!s$j%vHLlX1r94q(oICwLRfUg<-EM}nyt7My)Bl84jje&g;%scKFoZuN!L1D_-f-94cd+|%1 z-4C@!4qPeR_3A>RdEb_>)Ylw;9b(=MumJMIR~C56hxD=Q2pYZP?Q(IUI<_!gSt!qK zy+-TAe?No=eDL-hrLig?uI-n~+-wS>0#wvqR}d`?s6w9-p575uo6gdlMfu`kTr+>o4$ z8cO7{5_goPDy$s+ctUa%MjKiD0a`}|odBRhP{gW6o-OZbl=El!JmS`$rp&;_yE;}up-cgkw6e2>9@WFzR0T*RklcrCO~ zX-DLd#IlKcYUa#k+*Mfy?Cq6D#l!lY508JdRQ_y$sm8mt z=;;oO27^CMArHe^^36`X(U}o5wQxQ0P5Pt5@+{01MBG4l76Bj_?T(d1@x6NG-t(2) zjk(>1a&Jj_TUC%I>vpD$_IC@`Jsem1u0QRX$V&RlF`El&|2R z+#6COa@*ln2+wAFzzSg>TOk@7&}WEtniO}eiQ+}K0#Q7W!$Elar120U0n?=&Ic

l^$pQAFGq)%4mKeU)4dtk0+@Us2W-RacbXmEYBO`7-U_>Y4XrQScwj zKSrT*aaO|(2lV5YUOgx5PaqAq;s0dvIO@+{yIyk&#~NiXSgj#8g*~7hkJPjq>(^SJ zIKP7e^dnD8NrHbSnSP*kqklf29$;6d@l%2RLSv_51iRx$w4eiy2`3+5mth_eh3(FD zUK7ukz*0QbjX`{4ko-(3HI%4Tp81EwbjUagJVf$z_rp?N$RBtb>;a;EUmk5iKEi$7 zia-F6+u-->D_AqoT{rU6-d&{t?c9dNzwvG8)O5eHq#n2vydHX%yj}E<(L)jQdgm8! z3C~CRK|_6G_0M%J7w)uIa3_ZP;n{>0L>6zC%CC7=0nrWU2lR>cmjEA$@nqTeWA;yF zXm8|Yd2evBK&_#L!A|`s$L0^UZlj+8g;8R+e}gnKF};R;aayhBsrEBbGUSkDLk0gFEQd=PrD?){PV{B-}B@~dsl03US+Kg9)& zSoFa$4=^sc8&J`|7`QaX&z|>+`f<}EgRc@_0R52mYaJ&F*}{*-^Csn_ZVrZ^r<~1K zJsfat zzu>JX+w!SvH-9eLH^33H`aY=7HrRq3f+Xi%)n%3E-#NZ>sy2%i;49SB+V?e;ZZH~3 zwkRC1u{tp`;16rSMp)BuKB5~4Wy6x6U6%tbMufmBYc6jQpEhll*>E&YSB|Ihz$z#0e!vRy3$kG0X)ZJe&|Ip83ezE(5J}X46^tRUbfUFc{xnQdIa8DrXMaU+m zvhMBdzubQ;YJP3TW%v?zhclRiK(SJrXoW_a`38MM)H?9r2!eJHRc4(`-e-rlJbC$xvcSMj!X zWBg(3+!(1AVc+Hd$B_9f88m&(;Zy%?HevOT(I3VX^i#n;XUd-jH$4maBhfx+!L<$k zM?Lq^`nz+cwC=RN|BdI9r3B{Xhyfi)&gsmgL8!nI5gK0Z3wvh_<57zw(^Dj4X zXHgEOgXusd8p^VK$8%l-onHsc0hT|W9xDulkP7k#m&m93$H+putk)@jEHoA>77`z9 zR(YHYbUl#5JQ>+NZ=}!N=T@TO<;C}+e&C+rG@ga;QbXU9-74Mw?1w)+IJfe_!8ODv z$X;Z&&E(}G6cIWrfSEEOi&rT(aVRQIGPvI2U zc1GamyE(s~{t#jL^o{%5^9S_{Jv&p3w_}^J&G_cz{>-Ojr+;^0;Ys=PS-q|A>6<$6 zi{{^CtbF)SNvbBp#!{C8dMUnz8n!0iSml9k4(fvTzo9io4DD2}L;8$5mRCf1;99Id z#QEwlpab7gKgA8ynzmK^loIlz;=6wU`_lI4=G|p*poDrE&SjE)Nh^XF>5sHpF$xO1 zjMvFp!5i`u{<+v+-S7(wXSJ>GUVPU;q`EEb)o^1N2&1zv`1nCLfEyll3o%Gbt}XrI zu6nl-vTMhdeKqV;4V;Y+eP*=$Z)G6SBf*yqiI<;$xx72IJ${|h35R#NG1VAvWH6fv zi@%|45qI!d-6cw@Nzoj$$I~@l9^CC5++!WmnT%voG|9kD3cffzpH{sS7O-TUOuxeh z!+?9GGt%yqKV-XSM7{P#VHXq(wgZ65pSI-Na~b(cMQM6XwW4C@2mq};E5}Vy9_R}? zP`l86+Pk2(ymfCK{&+vf|C(f9p!);8Pie}(cua4>^F}pQ__2?crVLTu>#7%DgA0>i zBy!2iJy@FUE z*5fo2j)d*dejQa4ym?8qdHw&=^>)8$WZS+dUML{#VDl8aNMY)I*>2-TuEJeF{S~os z69YLYAhj`&V+H62S6Pabe%My}trt?PHuirwwWoHakj9COU^@f(y=yg*T|W?w9Pb>NHIfgTM6=}K}n zvzl8iuO=(0bjreC#4^c|^sV%*_a)hv=F*%hJT0E5C7&rj+_Y%7MU+4)keW?Z@{VN4 z?7&Sq`Omvmk{W4t&IYXb8)AdcdG> zr=DB*UO-3j-=5~=5uE?FFJ{9UpY?tkH=E_k?gDo|kh#gPH?jr%=|MgV+(+O~1F0M+ z<{R|~L;Pvdo+_H&Kb+!5YqZw%Hu@O&)IiS6R&{i6!kPUteoV*rR}s|#84@_NItK8U z$IIllVHd!ziOeS1<->`6(c-;Sg=X_Xt_P&CADV=j!fB1$#NZ7txp zwg|yh$06o1kA>v@8+R@sQlOCMm45obUbHfN8T4z^qHkp}&xn6%80Q=5-y}wgN}A-8^6;eB>Ho|1 zqwI04x~?wl0Taw$!W{-TUae}+nCnaUs~8N;Sbvo8QaTpKz?2X z&N!dHTzjTmK757@32%(y;e61P%b9_=J#!FvcQf18`q)~a3!p2nz1nz1KM@&ABe-$! zF96x7yL!B)D!%~bk+4GdHx5#-|6=Ml?CM5(tqSbdz=oRZXV0_hT2t;Nt3!NjeSNUM z`}+LVSL50Jiu_<$U&jZ|qPz+ma!tpm#VtO4|CT8q+Hf~Teu2$3AShygT&!Ix?^F3( zee?LR*_sx9Z?(G$bl4w2V;dh+t5$rJK{1LZ$&yS_ViIj>qCkv?Z(DM3cepi#ft z0#)MQPoQAX#_QGlYx{Zm-(Me?>$6eAob-M;Q$B%8TJYaathNAy8+&tR^`A~oLhfP} zN z<8fg0U$-xmloC@4W+E9WgL2$np@E24<)qnA&_)n`{1SX*qI!#rDL?4;6~Lvt9D3&T zqv}!it&1LYSfBI@di{uAo9g2{H;Qd^`(koRlF`KTP(g2Bg!+VI%=5|UKk4TeKm)?= z((baZtGDE1z5hwnPX=+$N$KeOC`Jbz^sxVQ+a>)i^*@5%8~tZZ{y=k&Sv_)|8+qv; zY}#D>WgxR|%7^CpyEpmr+BpKOE7rH3aTH+9ho=gCFgq^bV-^@j)FS*+BpNd3$D|*< z|I_ksp85jvmI-`x5cR@;?%H#tSGPeM#z4RQjCD#{C>_s5bJ3=!2`SY)U#ULy+ZbO6 zL#{6JpHXdfD8);wQO8)Zg$ zq?thJvQcizpX499@p1w_n+xr5dl^p*IyhfqvTe4HTPcI}_jDKP;rbH%py2)Wh5x92 zAI6F5QG>|jlhEml=#Mq&&!B&9aA*I{fbxs8P3QIG{*S+49rO?Ms<=_3{?i5Q@s+1~ z|DUoy5ADMmn`He;72fYnsg(%9O8<`C#GTowZi7GC5hTnfEOMBIpD#U!4=8!R5B*zj z`WFVyLjpcj%esZZq7U59&T&3p!~gw2LIeN~aO^jF%>FqT$nP?w+)y*pjO|B{qkmv_ zhx4oZm+x)tdG;2xa80Vg&$`O~!MHtE{HdRO^2mNd=t+zI<^N3Ikne$?1AJKN*YK}P zU3huDfDPbhkF~!rmy|V^eH!kD>-P?pUl{!#?r+c!hE6-58Az86GsU+g~{&}6#w zep){XIpUVzAVd3SpEZBbt}+AVDW{3QMY@8j&yTL-Funl!4I2PFj~T6*dxiLumA?Vh z0lfvqP%wu)lopT#1#?2jOb@Y6*52*k8=^#RZ-%wsI{uv{R4F zH;nEr{PMu!Zv~9ybmN%qN8lU32n@Dm^bYG=HPjlDq=hc?r^w& zP(KO#>2dfoaffBq*uU2LoBQvAITnHL6n+Ja@>ia}vs0|8zXJbCVt*bn2a`{wZK)PR z90Bbw&;IcJQP>}$0}1a)MjQe75j|$PAC||i++{-8pZ17-S&JgM1Nvk)%ZK>5;D4I5 zyR0q4dl)tX&M4RE7xaPsf&NKa6u$ajwvYJK9z6_BS56(N(+Q%_-{$cB(CBVZbPKp6 zk0?x?elUk-c>&R!$2dP)!80itSC^YH!~fUR&yfBe_G_#skUQXI1uwlL_@BP@>HL*J zT+Mbwv6{ry!2FI zpLDT^aR_fEwqjeX!fyKB`6Q#9R?pDSE%YUoJYZtFevUN>82rPuzb*h-8ZE$&+;hzS z%vtkGd^X- zkGIi3s_zYPAyLh?>A!K_T#vkNX zJQ+>Iu4#WTvRPk+z8RWPCJp*LN`U%f4POI1sbST}4C#7JqK_3d7BuO@93RPal$VPB zLBF~O>=cqP&_km>-OrKZHN_JD?}NVHMf>m`PBZ5G8hf990-L;@Kckt-x7S)$d@Xjm zowdsv8;EFtV*i7_S!@2`e-8Y*J`)A~H>BOz03Hfi=7Kf%k6!;usj!+Dkp3b4 zBleG&#=b=h*8amzg8sb1_JVEcWd!=~sJ^?b`7_rC^S7XeYx93w?kv|31JIr@_m7Sr zy#u@IuM4Y@---H{@m;EA&R>iCFTo#zq8e%4R}+IM{u>sAXV(1c?*}q-5RktTum+;Q zvtt7m{jfgL=PDgm4Yj2+F&V`UVqpO@{8u4AY zzDH#RtACIbUb1baJ>C}jp?16-ZR3ROvy#s|K*38Qkl&z{h3ro;3gD4sF|zm<yk zcYtnB9!SOs@D+b4z}^D?57q|y9gE+O7h-kxPxgN>18e@U!Zz%`2JU!`L^lTeFWcZ6 zzK&52YcxCp(0}X+aZx&1Ia%)DL>lgo8~dq<9V8-gP7L(+1%03%_}ijq5u*ogA@+ZZ z;&a$d^Zl?Yv8>W&VX;2Q=INlE1*Z8689i$nQF&U!8u^a+cLXp~!ndUBnxhFZoLo{G}8z z00VM)aXC&B*G>GGUVf_Y-vIU(Bn-^Rfki*ieGUx!HRh))#p8Q8UtqsxdPe^yE|`nE z&5c735D>$0F&_JvfEOi6SZ4XqJ}ky1$fo$Txdc&*Q4agHZXdq;SvtY`UBt36-9F5k z_F-5Du$rK6J_zeXBneim-;ZwOZ}cDc2ame&TeuijVR#;3{|x=RX@9anP=I`!1^?>f z{Kb8V{%XGel?U2O<&|e2S!sc93Hqbm|C%+=Kdc|gf1n?nAJ9KqQA`&7xR}2pKe8`G z`0J#h1;&(dew*hDoqlW@`$rYik{Z7N_c;Xr*|p9`Y8~<{DqA)bX-WBurr=Zvjb@}*RrTAj*I9m%Q~ zN?+;x>-tOilDHE)Enl(Ikqc>7nvPw?rr~3NzZxHm4zvdT76bM8S3WP-LBCZ<7}oks z)A%9()p7nna~*Xp(Tyu>$)7|$pdX9@NjP5|Aa7uQBWxJ9@feO zLObUq0G2=ZEb3 z9r@Cuip5Av%*8vgIs^N@=iDgA=}O}pFn+upGy?vlTkK8xZyEj;ro{y7$Z!CBsAH#5Z6!l zLkYGIL{Tx%|J6RsS!TbNoedAb79dJd7t0C2z4Z!>ui?jo9q+7_a5q3 z(3iK$Dtm(Y|F|+pkiQUGV~6wsdwmS~IqH#*;XOpz)|XY!Z_MmO+Z;bAQ$N({D6HIJP79}axa4aH9b8h#C|a9Pqe`OUviL<#I7VKVt@aaUEHG}K-<}I5d-tCkFFaiVD4fUzI9RShe!+e-+b3!V)iE~gfA}_&{7N%w z@qer@I57C{mPqske4S_y-UB!CD^4%ZebjG?I9&*V4$>+3&x9qvp0kwS1O7oAxVr@Z zpeSUa$utu&-`_L*PbWGanKGxZ$jh=vg;$L^fBO6N{?Y!VC_TutXTCoy`3<_4L#8MV zHn#6j9lJ#p6Q_&KP&cDC9-_otd#^CNT4GXLJ4Z7bv zGWj!$oyTfQnZ1sjN#}^bRna~kYyPo2{C8Cu97m)Zu8RAu%HC&xx6V(tBdHtn*jMpE0a1cExai;0<>0ze{lsI~?l|{;fg+vg9-L4*Ern z?iZp4{uPhzv$E&)U9)~*ClKLbw-0Q6t0{l4B!C3o5#9)^0aL$0`$v~QasEhWBFRTz z(f61B9g4P*Dw+NreA1%N@z3zj8hAS5S)>mN1O0u;e`u$$XA1s(*N?R0eZ-LdNr>sz z{S2eSUX;P*zw1bEVjpAs?168`w{tUpkiR+#r2d5ysdT@9_I3U+@!ohpdkJqC@|#rY z{{Q{w6*?bi2F>x)`nt$2aeq#Oe#x&>0BO)o`lsDv_$LMZ;(?-&_7aa`?Qg@r&$EhF z=`Vf!f__Z;u>5x>-UKDu0S5nJ+T2T{f1V5Z5a(MTnLV|8{~GBCUFmdgJ#s9W^6R%} zLjT(~JQQ$u{;6Hkq)S2N|EKW3c{9EO^z9EQ8+}l4r;0=@@W6<;dG=l5te<}|! z3*EVt^PN%Oy@Qwt2@xL&S4VlVwyo^19l(#|UDE8IxI;dp;}t1>2eBb{wx#{?kkDQF zFm9B?a*_1s57&@65|~mx<+L~edLFNQNT!VT$NcP0L`wqVQ;H*pNJ|{#24Xk&Sv21d z&Bcy%IQ>SFr`1{X50SEJq+9xM->6UM+3;4B`bk+*ziCM=cAwps>ih@ZY#+35)mNecE{>NsXV+2yv#_c4Rc!kyHVh zuPM)`)o)IwA+bZ@W_}>C1J{CVP-8)HXXKplY=-!kba=K#`lBA>n49uWZdSu(sN*ns%>W4WAF zZeMs2LE>-QP5lR1b^=X`>pGoin|c zZP1*1w16r#c$J5R82tmfoUb3)P3Fw{*zJBlBxg;q7hwab z?>E$yIz{_Xje>c8$mm_b9vKLi(%y!eQ1$+Oflt4&2xpdFq$O$j%0@gPdvX)9r!sqH z;m6A-fv&$5`u{B-=5!ZA5kG994o3GND@Qn^0}Y!kav&67)^ls`jPW79 zn(|g5`K^K&Yg;-Z^P%~g@J-SzM>ghAKC~*XuIBR(VyVNUwkKb*b+#)HJbTQg=Xb`=neqq4f8sKt&9-OH z#3&GOjwH~+{kK3U)<2NnJ4*RME%7`dD>We1!^R>#A89L`QI7LZ_vd)9qd(dMWMDz| zw!E`J<=DSA4zl5F4^d`4INH+#@!aONIgI+yn^XBf0&AjE!j*GF6uHQwyKDBUD zE?oqsXDqU71f2FgK zO8x%4mNc8UxfTYa=)oLNqF}*+eR{IS)&c#Zx&4LAKn3M8_-hHk5h)k+#NEJlz-Sie^$h4Ylmlvh@WU5e!8M9pry?I!S^hATeYV}jLe>P zYOaF!nrY2F6U+@LoH8xMkhX+Ygz+)X&UlyU20zVdmi?LL$BXwD@S926RT>|Q@mcxb zY*^p%wxgYH^Z4m}Iq`&&+at@XH9?5*9#1>c#dIX?C_1|19pQ!GD5=P>r+ zwbA%p3azhq*n82j{zd;q)s2}6VBL|`E`1xnK>;N9TdoCOm z&$Eire`EFG1q3+?vApmBLhspcukz;kM)QL=U##c246UOVvlvX?(ASWDaH9bA=yylz zpG7~(@7=H!3} zm`y81AkPmb==&4?#CPI28OOupA%0+d{Dt7Pw>7era?JNbHoEtK zx{(3g>L2zE(33_kf=S#cK}X&eG`-JD+>reJo*m4qzl6MW*g*wX*$eHX5U}iTBb)1+ ztm<~;yGWYQwG(gY2H({SLdLZ^V4rQXY^q&sN80Z8XxsCA;d$W6x;@RA1H@`@n#2AW_ZyqdiMtNd zT7X78W0uc>e^273MDLtzLfQKU&!K z$eAv3NU38u-PqcA57JR5WA#t3Z%eMzJ{~wU-zVmJp%r+RG504pM?{1SnUVs$z3v7V z4)E(~q%3Zj{YUOgma#MGsB|{c8ij-@D8gnA`M8bGTy3E>fpfh8MA3`65r%n8W|3uj*EdBz{01tlR4|94}U6MZLYN=;= zOTb75uSd7-&xAgs^HEop%XzYMW$T0zG+-5_9H|nbXKwXxJ-_q(PM`Rf!`NT0_0wS4 ze(V4q`N9z-2xv%Wo<4$f`QU}oKZE~_Y(J{8s$<;-T4KO!Zua+jNOa-cy-1~njPs3i zM|?H)O(2~@u4$`&Aj_p4sl3KJ99`OnKwoQsVVd-XbECq0ee>IZSM;#_oJKROI_?OkUVvGBlNdG!9ld$aytu*D5* z_x+zHUcfU>oq%lXUte!q`Nb{%I^QRTjQx@HT!`snYQ%j1x=ZxBI}RT*$b53N9LM8F z{7&RFdz?Bl+D`&g*oK+UpkMZvPNE!O3@3;9?r8sdWILl)?O6Z%czr_U>wLXfPajbI zks9U|Tr~s!A%csrkRe3eMKFIx^K`lf+*%+YYF_x#nj93=8ZhS%v$MnOIMrf3QU{*{ z0^J1O?;pN@t~Q~|9Rj?F7>B(J>82|>;2j?^UI59X$D)3&`x9=c_B3SMLSZlU%;LXu zv_3fptv9G5599;Ym_HhSVfcQcJ169ib>MK&`NN`gR>K4( zjry2B&365uiv8sTLZJ)0%M}=`4<(=ntyu>9eYickRTIW-l)VWdLo&|jY z88uY}!XZ`y{YU&vW|$v^`iGn$=pQteY2a%N76yS_F=f$L8kpyiv=bh+ICGDjDxD6+ zlk~~^&Q1RqU?--~E4Svdi^zgfK<};kC1_26Y;l-xLVi0OX>!QjH@B5?3NR$qvwxyGiLuD)Fcf)kUg45N6HzylbAmfJ`)2q`X4wCUVHZJ+mE6DaC9dI;}?i8 z=oULxeS1&@rb{|mRHO!FXq?c5EeU=c`F*4QqbCx$+Q{=v|8eD3#R)rSpe?K;1IbIH z+!hjh(2k_}mbhcPv{Qr!kPwic%*w!vkuji#LTh2mt=Sv~{quE8!omK>%0Rw^eQo3t z*}jnB1|Iyo8Odm$_?Nry0GIWBy0tq|x$}>4@W&zlg8U;Oa?z2>s0+0bcrg(gs9~uDid^iIv-x+X~kg0q<7~xZFm$AJ$D) z9kUz##2JBeQh+^VQe)6r+KOl-8j=geX6p>e)=5ukUKCjg0 zSBpA-9;rQmfA2!gsb+v96+r&2S#`>vQr~HIb9mtEh}(8JGV1)`7S;))Q^QZzhWFdd zo*(pS3uP|+S@02;08L1-nQ5lY{YB&R+HB=@7tUvweE@8%{qXkOrSQaf0rH<-L|RU0 z51~V;+V+u$v^UlY{%P@Ve`{fTLbZF>>k%NsIP;Tlq}<$Tsci9=6eG3ZI5d_2`*$Dj z9=n^YPw0rBD(k8LWwig_fN0KXfBAd*s)(KJNU`8^IRA$7NB(eOXXIdHCw~y~yEOMf z_;BuE4)GJYKGnBlPB_JR=^W&@r4rZTG_EG?WB0ey`u$)8S(zrVr<}NxdyZ^n`+N8? z_rx5Zv7H<5r}6&_{QbXG5tobDXY+V8gm^)enjVR|3#pS0R06)e~4q6(8e3^BxqDj{xh;QdwA#I*5TvB zxh$Pe7(b}Hg!A2DbTBChVQFF^Yx5$+n~K=zn`Qc}W?x z?p)nL`TT`qmah+jE>24g3O3LaOT{ae)j@Zwcj?@N z<{P8H`l;imvz^s;yrox9lH5Mpb-oCwocp$ZzOrSaAM5-|qPOGSOuVG>U1!|kFwXzX zFXr~L1+b&-zWk@^CrR}-LH`Q0Fs^l%-TXqTCo=Y)&GzA-SQic`y8^iPX?}SAmT<25 zPH6uJk;!)i)JznI=}l7qMm7UImT_y2cK+pE6}L+r-%A9CduYy&KEF{n^h(zH5PdyB zgqP8Q08SUT=4|_uYh0rrK#wqQhpEN+rO}EVQVP}2IC3U=2J~Bx z9e>09yZD!rkv~{SN`Ve;`_w@+5R^gx{dE^x964n*&WRQf4`Vlr!QD=snY{LRQRv<} zamo|j`NerPQ%uK=>a;%2kAFEycacRx{R`p;aXyiNX4+S%+-H9eyfw-nfU|?YYMDNwqqLDa-w8zJLF)C@C!?JB z!`NHrn}Cbmwg*R~T?egBk{9Sd zzx(5df$@IZ(X2+g%*>!P80*}Ija!nx``DG zztz4y{I;L_r%|3i4DCvXuHF10>~N`3ZAP2^wARlfAWtu6)@x$Rp}6bi@!9U}qWh98 z1=8h4<-W<#lYA+vV}&rHjNK(CeX@ zXCYw;je?qN80|}lzICatBi9k()B_Jmvwh;*eAnhP=O@X)H*l$ZKY0H#whL{%>V+kX z2Zu4rNk4xF*wzW;C4y(}-zGa;O?W=nPQ5hildW7^LgWfOgD_k0^Li@i8UVBWi0R#F zt*D9Oa&fr>Zyn60Q09+Q=J+LoPlAe}P2# zD-{WzD}n=&o-d#we&#vF_B8hg*;ip7?gAxdz-_b0;Z!=}Fu&{O1e5;&2frKaFCeVL z^N{ve+scnkC$Iv^fz#tYNh``Bf)!c7N-1;x8DLVbR90H>D`H~sB7&dG>TEwC6*A`d zb*l&ZzeSN5kY6=#FVqgSE&U?=Q+oHg#0mT^yHTFIglFu<%(J=YsW)bQ-^9h@tAutR zexJ+mMDo-p;l&3D+1h`Y(Rep;48Qwd;5iNb_~gEDVCDa&`GwRgC+Z0`R%Cx8eA5ul z$47sfik7HvR@VEj8b{Eg-Bsw-`vGoQrTEASGd z`3(;OuhZuG0+24r!fP)f$86uLKt=_J7Z>M;?>GEMu=;^mKh|gaTwhuj`hmZvW{vTQ z9eT+76?Vq*{BMdjHc(!VUP~r_!F{8)(DcKuW`hM3Se#98uqHGmM@D@+b_9F}=m7_i z&cp8zXLXdl&PqnPbAbHaTXRp5Q`n|x$Y(QfGn3a$FaJ_6XSi$6_QLUO&xI%__rMET zpP3Lo&*WU@`)!Ob2vm@3w>QX-1)a#Ps>lEPg1Y>L{1$4Y;cfVk(YMfWG;$4!lALJx z8`l1Z(o27wy7iIx2Xb#BJjrXy*T`Rt2lsD3Uv`w`0VFJF?~$X|oL|DCTzj?lO2!%K z0{+eq-5*X6Zwx)TF}~^Sv@&x&{f#8fUHPk#?7YS!&u?0MX!4gSZQ75#?V6MbXnuGI z8&9=k*-u=KnZeASv=^?ya$j@9dOBKl|KW0vem2@4Ri_Kn1xXF1v+r+fWAI=w@Ciqs zQu)Y^MBX8NUt8SGUeZ|xEKi&iwj(_HN8y1zQup!V)9l#)seE*k8_dBz1>e%vOgVyB z-L;xe%VIT*`V4uD;;qY1{|$CpAY}FLe&xTc`%j0#@ZSZ0>0vI=N$|As{BO;d8i$(P}S%^a*L_n3-3h;2mo#k*vrr!ke*94 z_a_g#jn_Y^g?HU}z`J*G%f%Bi*I)4aQ10Cgy%y^3ePs8o@>yh{GV}XEUjbB0dSO*-doPX17-ABG|y)qBf?bef9Pr}Cjw80vp&R+<@VhHhN`+Nwp z1^BD~IAFG)h2A_fN_A%l_|nVKX-Xs^Ko2B)r0KQ81A6JfIwf$k7P|0E6Le=)i}dQdX= z{~GMM3)O|}5^i~1KMZ_=QRJE$-Lmi}p`W^p?2&$ogXCVSlK-%?;EM#!@nu_>pOy%( zTyQ4%=T`k!uyMOiOFtX^lU~gHD*h@dGvt@C?FuOaXI=QrzccoK5?L9-t#ElB=Qs31 zs&tXKIJ@+9eC@Seqkb_N+Vczqr=sQKK(u^4}KB_%7tX*+jM>c=T@IpQjCMKC-kXM%zYx+s+1J z#|b}2*|}4@Q}fg&pCh{Vml1P*4G$`m`{ij5BF{Xpx!nq(PnhGgQS1t&7Cpw~JurOt z!+WWaDfntb}`i}sybHLA-1G3AVjvWOGpwDkZq zEhc>de?{+=;iHYXr$a;+Z;gC*J~7(I{Jq3|IT7e6@c@vn1C>a79g>2jpThVfB=xc) zJd7f&jg4|q%x~LyX7!(9>pcS|TfLwYfNpSK_RrR;wjcw+DqTG@eoJTR)=156oX*pO6K~G)HigGPpoej+W%kKE>~RdkfzgoKd?#f zBBRUQeidWG`r?Ft@WuSwudA>icuwzrR!-oFdjX7{i}e%xqW#3EZ=9dQ`;C6X7}*=C zku0u%k`>)=2mMd8Ds#bHP98qmwFA`8EQjY9y9*y~Jw}6i5LT0?BgfYIj%dJ^RLOG) z>%8O981~LTD*wRki8Jf_D%Wfg^a~C|>xlakzs}!`kMK(nPlNao^h3Yj`0!sgX!5Q1 zS3rNz8bdY$onjA{scbmEw#5qk=g}@=v}qNfp$-t_5% zw%$e!)D`on3hf^}A$7fJE5jD1e_+`-6QY4L>0OxT;G@F&2|vK709-=jPO zfDFn5_=bpY2>36Ftvs>h*W1@FFZ*nL9a1+a6!-t0n;C60G3C&Bzv2%{bJvmjw|Ks* zf1?Hhfrwc3`TbHPa2-H|`YccNXYCbh zb#1an{%jHT+s3zz@6_)aeB)b{e=FVOhdx4nv7)W&+k5oPX(wMr>L1saIkSJtIPSN~ z&OKy_R}R(=TryDZ9=flp=Ka{sgqDz5`*i9z*E{qU^>5c)ZT6$J6 zSe~!pEU{&x=-i`N<9ta1@`@lm{apP_D zA^&!15Xefnk1N1%qHLV*maDB?8Rc|82L3IyqOux-1aI|FIWx*F{LY`W1UMF9;ZXnG zS62MbP5dtMu+j=5ir4sO)K_Y*s1jXM)_O{74IY+RCIlU}s3nbJ_%_*s&hwFT%DZjk z-Zp;D9T;E0{S1C%^b-_<_v75xpW*$?5f~GER8?OSF!&Ogd(y@=mSdVcT4vV8I2*lwMlez^=(#p9(n zXyh`fxqs8Qc#1Ltko7^yb1hb#v0-k5nk^IGcr?Nn~J!BvWZhqnuNNBB8% z>W}|wjCF_)WxThrSdlwRr^xc%Tx`mn1#Xg29X{78ZR$I$#3?>1-J_yUb@fbsQZyaVlr7FFeSYWGGy*r3_D zf3Jb}JMMMw{d(`$4MG<*+T+IjYz8183L^_AnhpGb< zV!YlCul0M-KrGrf=qKs?HZwS8Sl5sLq5lK$oF6C+md8aj@qI?WG9TE7T6(i zlt-5Qgi?l3MFtBswx;;wWo9sUEI3{I`r{o&{bV#*Nwe_sZ0kQ^fwAbfMP(f)Gn$J%`D z&dKBLd$l{zbP8=te`nL%pSDfG^Y=FHD!1{IbrBlJO?`@*(xpK2XTaenZx!Q1?@vb0 zmj_~tD+m3(Q!c{<{k8%qR{sLZJ)1Ga%}Wlh3w-S^vY^_5Bxuz?qWTHMy$aC%7op1@ zUk_`67dht_?b~AK(cVInb4qG7$*RFG{EKLOo?5i07~_XE4jvpRPbSU!)IO-Pl4Y~L zRwWzDa_|7U@lP`5Cz@Q+;9;qjvCb2}34aU!>x16c^`prJ=+}Em=y-Jto+W>gM;O{y z9s{Fnq9~j!p1{Md0bet7f9d6}r9l*SKu=G}Q*Q%3|ImNTc>j`COkw1yZhsu!d^~LA zmj4}z}eUeBEl{qxX2Xr5tHgY=lL zKnu<8%<2}vFUJ?deq$M~uGBd^!fUaV`ig!jcdl@V7{yLZoqRL%ac=8@MSsTl2a7IY zFrJ+s+#B3kGZ4q4Jug?m?7dI0UT8FV6*nWK7WXrE@^yfLgi&-!Ggtk=4eL!qJAFay6bhz{!ems|zh~JeP5L`rI^==D&G#4kEO%$Ee#g4!pHF|;e7F6 zqC0y!CCAPCG0nfHmVgEr{zo`FAYaFX{`|jM_}^4MZd=q!m%{0|BD51dHX-)-o}9nw zAJs3Rrlf4C_}%qZv|{P9%WNoZIn^5yx0f3UWgr2Lb+xT}2!{Xe@K z(WdzS{_dv#)P6;gYIikB#r(;l9LNQ%a`cb*LkUsLcP{6(MOat`Sn`Ja4fDhDu@~VN zk~WDLsC&3;eAg7Ss}=)C{fWictM3jcE+#GnE%EB^A@^!JJNrfdkU#e@(G(B4!wBMH zytoerIysAe&`m_;v;sv=9t(NBL3h&ZxbchIvbQFRK9oq^2Z+Eg&JH@?B)rfE+) z(~gWcZQ{^Ng^{c5*ay(=&nGI#s74QfK=oRI=uL%jn1oAJT*7pST{q2p%#)k3zAz24YOy>>>d za@n7rPXDIVGrO5x0I{p6&m;@>BcmMXCjPYl;m*dv!}>!|+QX-5z4%kNV|{nrMp7I-Lf@_g-l<8rOHcCNfj4e^~_LHDH_(GgY-RbfCm;vMCX z$=@B2oA@OEj{MaO%Kw`FNxzkC{c!Tr;D^=^t)KAkhxSkX)Np^%{p2C_&yQXPR9bm9QdhLp})_z zHrhA%(u9vo=*3ka8)tc76z{AZY+R=bmj58#Kd?S3e%c=5_JUP{Edv^|7uNb<&5V^p ziClizLjU2^0oA|$83BFLz1$U?>So?VmxBr})YtYZU4fnNE>watD zD;p@x;B??F)zb$JrzQVS6K-+dt`Iiy*2X|D$NCKAZ``DS58cBqp!Iq4!y#7Tb1Gn$ z^zkvy)<$jZWxiV}u69@Dio7~l%~sTmVp})HPx#BLI;t~v5%MP)Ka;1#fsTJX)SpQ*W)D77^pkwIB}k~8N@(t8{Ur9}>8dK*^D1!hi+MGBx^bFP zoxD*F{e`B$_e;v&+5YJ>okPZHWZut@Mxei2(@?X6o`KeWP=8Q=!WrTKuhc&+&=2r| zD>#2vwQ6@Qp4+cffxrC8D5k#Qfm9a+_uwF%LgJQf5)gjQbTT$n&%%dF?m#8`x_iDt~F6|29xN*%$npIuX6UB!t8 z*)b0r%q${-rM~dinjf?e4+jP}_OMp;*MSC27B~Nm{72=`oBEp(we*H8>10o*ZUWujSnMK{ib{Z`^|tk_4F|RTB(lG0T2vc z1OM&Xs89Imq&1&YBS$5zv|zpXtm3DHw?a zO#L45f2!?=#XozodI*1va;QIdW-Z^ywOnNTp5r;1UsWLAEBFZbPlxv#_$IJ2>`K5$ z!R~m9`3r`sbH`SF@`^$Gsvp|()st);?f-M?GW18l^j{eHO@`e|vM+N;^CnOB&Lfsi-Gr{haqZoDzDr5r&?O%2B2^H4JNlXm_m zb+XMPe~{P)KK?HH2mc`9HB?0U2W%3uy3%kVe&er=zaHUv`@`Gp?-qWzY#UK+4h49I zi`_+NPw;dX>4p+9>MJruy~-_D%cYS7gXiPwA6d7{yuTXSXVOjUk}}Rl=GuE&{ylS~ z*H0?Y&)GEj+I2m8kcXx|FVW8|EW}3p@_QR^^8x=e>nX1kS4u1EiA?i0Cy#l#@IzqW0*e>M^uIg`nD zSVv9#BQ0_iJKF4DbVM78p?&?9ya@bYe4`mHv*!M$_m6adzuCd~vhdT?;-6#3%z?+8 zA6rN|r#mL;a7jkOPC1zE0JgleA?)E zw!`2&%QfJ8#@IH)8SMjq0^AeU(>ftwON8GFe3TpfJx~o|lHlE{x*Evp-H_C5Ba8nZ zHOJ@3R&)41A+)DM*$7q-_*L7;4{nZ++K1gvKZPPd*MS#dm(U-r`IB_7OCWe-MRbI8 zoYllHt#agVK>k+GYj6?p6#*-^jFrUm!t8&u+C=+AK{^5_`N_hbd(7JPawftoQ+qP3 zv$6ykDwdAPu!3u>Q5~4XHFi0w#E zm!86lS3mJ?+9!=aS%hZ0vt4dWfBy>$-w7UDpndXgU@E~g3G}~w!IqgJ{rkZ8VEt|b zp{o=+l^XB@rMF`ajrPZIKcMqdK^s7*~#~8!}M-q;VbJPi9wrXOngF{qm0kviigN3e)sR@`;WrC${we}IviyaQeT3jY@)xMV4;vT>g)1Vhh0=UtOk@C6_Va(_SARD zn)FBOlTLZ%f=vQ~iJnbc^E+*0;JW(9C{L%oGOz0b$leHva+n{`D9_>Q=YpSEQTryq zA(!aJhmp<~^)uPD2pM>;f!M?1+ZelabVyF6#ry7pyIRRO9^B+-qVh~8 zB-1S(E9>G0ZnX+;CYLE+>E$V(3_n1X&_8eVRX6WXWg@7L48q_Nuxxzd5eseQZ%6A& zn79M#;uc^?>vAA9lwaumin!?>hz0i%eDRLJ%OQ_)=KNUovH!qZ=)q0bZ@*Sd{-KW# z@1IUen)F`kVjV-=HXHfoi}}y2hA=ylOgYRWU4H}r{$ItkFYDt|2%Ghr*23YeId-f)B&|nteBcgwd*+c7ifPbbMeH^PA{-%M>+Km>GstH#v;g<{dSV|1Y4|Li~nLH-Q= z8}2X48K5J}&CzEwKjUPFB4j!}o(>(u{LT`2(XX32a% zXibsG%QXTkegqu$_E-8lx|?9tpE#fJ;8hVOgolHX46*Y1hx#vLE_jNQ&PA%ekaJ&l zJ+fwxA_g?-zeD5SM&5?B(A(Q@<+laRX7VRk#j>(G@_X(mq=tdfAJ#%a4!0w_dA?Hg zfedZM2y{-c{i@UD=>hk7eJGz2Cn2BLH8qqB!An!>kG0F1?RU$53g4^E4S8g76#Bmz z`iB^#N-c%{Q1{6uhlr_G>69?SBzXU_@cwnSUF|Ywj1Sfvg>My4S*#@AzjfON z&xiCVp2@T)9gy>BtACOfX_dC2v49TaOKtG5Tq(9bv=Fy@B&mfXoDsTx-@4yY|0Au; zrqe%W>L0OS*yYCk8~vy8on|1tkHYWD^VIob6!`gbH|vM-&G#PGh>nq^h0u|nl|DZ} zPs|aZ|B+s%=C$42f9*+ksOr2aFJgY^Mmr1NW9Y}w&zt)#%}){euf8bXyD8WEr_V29 zFfnlkcO?D@6Q=$#<`1`Tm2pV#vuXEx7yTQv^oPd!W@Z%Wp**Dggi2EX0!1_yTMsrNp8)AaI&dQPYZ4wBmWPc# zzpXSdCX9I}8H@Ok#h+>XYb|;oJV9!c1L-o5gvMda6hAHcK>w))b489PLDLG+wbg%vzP;x@O@bCaQT7FWW#HpJG0Lg`Yb`{(<9-LEv>a|4!C5hR zmNN0>m~+(cl`uj{9o-w<8Qq(>oP)1|Q5)(7)X%lb@QVW9#?Qzgil59N*tFhH^u4x& z5f=qWZ-J-4A$@T(eq(-a#)kEhnKYYXhhfAZNb+ z9P_i6=;7}Sho29SYYGza{t#bX-(PE6T+e@uHZTj=frx*w^v}llQk%|eZxRv!%Jm3| zugXK{A9ON}NQcMy1P#P#QMK$(M*VaPr<=;R_?C1T&I;ZT;&5-~C)CP=J`BAYjovtI zt#S_htF(C=8u|rT`8n`A#2nq=_hS6u4_kqPq6PYaj^qn?10kts;`b2!DY;gXsKYOH z{Sj#ZDW{*!Tk&T!e~(+v9`bTrgF~dl`{|xo9m|R5^nQc7GMH6FANy%;=o|;7xNh>p z5PjxrqZ)ZiLGJ_I&$sQ!S-?F1{Fwhd_McIg#^^lum5Y0ld4B3|sA2!%4dj&qeP2Va z-a3{3Gyj2PB;kC9WHDgga&HSJ2M(hDYc2FVY3Yga-`6+zv@||s(@>Q2aamCj)~!o0 zfs~-rr(TM;OE~wjvfzQn<1PoS_(#2dG|6bnxkvG}V1M=Uk>ZEAu{`iEq4{5{NvBee zZ{TNN{9QT@o~EviFVOfOLasEteuzuZ7;p5~{sQ`U8XT}K9{D-p4Ge7thiDbc|BcS4 z$2E2^m-GF>R*ej1H~ArGcMGkJodkMMJtr9p_Xof8T#}6U8};dpkVDA75Ofr-3op_U zvmE_@taGO?$3IpsoA(#0{}A&_8BT8A;V2vWQOutb0(VqoNOd8hlDo3#*f^hP^lPn$ z`k0}CHl-`#md5!*^>I2k^VgCVi(mx$D6mtYA-tJC;_0Y?vCY@R2f(K|n1@B-rvGa# zCp5Ow6{0VzY?iCK7$AjS(g8#7e>_}YcUOX)LUIw_re8n*NrE8ymkRJJJ(rGnS;D(+ z?0Xh}ly;Qs83p&hsx(keS??HMG38U8f?CldS@Yl)%T>9mFB{hQ?24%$GIkKWYBagc zBDW%^R&ZM(f1jKFms-HrMBG1NgoJ+s66xRuAB5W1%So@K@pY-q%fjXSWnzcw>!;&& zsg{NH)76pGDd2b@3PR1sM=kja_19WU``>gG?Y3V$5j(frB70j?O2+%Ce;ciI2$Hu| zex{e_ZF&!>e6{7&XIDbY#x8?Dw!Q(VccE716fsCyUW;5vijuvjtYjZ3nWWLai&?Er zF;fs@W%x$=AR~)V^^nwQlzVFT@Pz;7=_ruCNW+kLzD)WBpIIMP10Y9huD1%Z;`y}5 zTj?l!G`i{DG|DMH4cUv;z5{Gr;3egBMV)b zt6`KwKM$_wsQP;AzaXw-58UG`{A&;V>7^LOIeQXD{d?NIC-#e5Tl73HlL{TJU>-Xg;v#$%MTT0)Or4)21q?uIpK z=lknu0T}S+`Z-kRdq}RKTqyWqZJT@vzs_GF4qT`Iy>l1HaBT0#+OYpGE&0{u{{ecz zZyLbgrP#SoKuJDDhQrUJru=~TFVcxML-61Byouo6WM%j>`p5W}psx}TIi%n&fE$GW z`|k2<&n{!~HwONeOVG$NHo3+8GYl^HeJ|Q(+RT|z|BkwJe=!u+n4)~*f&ZGMC7{D$ zZ}9h<@ZN;fVQ650(Y_dqFGCg@p3m^QyoabI#7``GPQqDfKPE@d*yl{y?4Rztiv6Z3 zn;v!HB&;s0%O`h%Nnw-^@lUI>%6F}A@xU5>o$lN>=bs^u$!r+65R4xhq6lUq8f3DT z{;zr#ITLynEdt%OaXx@M$v|*6h!&Y(O7 zpGu<~XuZ&lAw~)j01C3~&F;+XuI*+6F3Bvnc{LHY&fCm5H2rRPsLwJpHS9oh{#@9K zyz7qUgHNJ-ara?G8(p155YL}%3GDW_y>?d@;eEekN$wFlUrn`yNdzE{s zdz1srln?0sx~9!+BC5Tn>`m;i)K|KRcQNRsjQ2w-*#T|_GMr|l+rhD{9sAt5J^72# zKJFiUu%4@D>msnCP*Ux9ibG`=KS8V^He$#*!y)ixH59a%yEa3jE zL2nhulR(N6rf1HN-}Q=zM<2I)S5^GCk?nTMKQ+{US(i>bY)cK#^^gvacL3C(5z*zqMJDf8Zu?xVAZ!96$V~S!%|x+vtIezHh#t zVR>2gRk;W&fP=HM@{~N)r(9`9ITK_eIetp>0rw0MMxFTSVteV$ziG?|v%XD{Sw#4| zWig%d`;yM4@)`2QGs}KOnpDjHF64||4RI(d^>`${5Y)G=XRwnTx(TP1<{+s8K zxjxK9Z|!WRIN6noa((}^x#IkvLwjzGyR+ZI>%a{^N!vY0|0;4|Z z$JSJg|G98gagHN@7;5V|#LW2{XY}z+3}#m`K6&L}rN43*OR&4f{4v2GB8R8IFZqz% zWPb*d17>-7(Xuab-1of%6XP+eNCNAV>xjfZ`a}MKoQ(M=GrKtTnpzb$D4dT*4r6K` z$m!V<^m`%yf-3km&3Ba060PN0tajJj-^_{U*R}dzwP1hpVq)m?Oy1M>RC@PlTVEZce zq6@=)?Zh}JK*C{t3ZF`1NKvpLGs z5%EbzV5Oxn@!i9Bz>s&beUWMN<1JzLWg+1J=E>P*r6y+LOgrGp+)=y9LSPZzopAxJQ$CM z_Wf1gE1w!I%x50V>u>=*&8V_U5&U@!+#a8M8!wvrMbyvzGbJ90-HVO$Y4w2xz2AA* zioG`Vm(KD{=)K1*BaOT8@N~u=#vV2v!i(XH3%!09_Ag==Av;L`cYtA)c)9r1jFBIR z=I`zn>IePy%k7S^9OqMksgM7)um--JL(+w*ZT$QD5-< z*16&xMi0?~4E?Dlf2a8i!D?eP7HWt#sUQ~MUR{VIOPJWF_Yb$Ce3svu^0Zt-tTmj8 zoyX7PnOH$DPy5%YX1t?32-+A0CmG{Y`Kk6yZCE@1Tn_PS`Pbqr*skaO9fs&M4>c|7 zEOb^>KTan|@|BkK7Ev`QOW*p#PW(-LHx~HfQiBuyN-w0bf4E=Zd{8Z`Vnd7A@aN#^;7xSLhM!}I5P}Om79&p*d*RFAZhyeL|NR;oZsK} zERXYLIkx-N`P^Qt0RBV=Yx4*CbK&;-&l&8XAM$Da1`*f4ARzx$W@>!*-mmW8*!Bq8 zruJvoMDuJ7ZuIPmjej?dIh`Ji*XwD(Ob zT95o3QE^9w>_(JFwP6(+>b1B!b1Z&u%n!7K7(e&K1Gqs<6C4lvXV7oj z|KF+beZo`VBj=#b8(*n0!K6>ly;-zB=0V07cy5V}htGlkEwsO=_uq*<0s7kTGy-n{ zhaEd?1Ug;(M|Q+XHM=&hM)>e^))?x5e)G8p*uNTnA^#qt6=mCB?hNzMLMbCE4>R#) zoL~);J`0EObNP=kSf&5ZaFS_|&mi49J-K)@-iad{t4H~+ru9z{8(+ZIJ zG5$%|5zG{Z8~XeRxZ8$>BJRYnw8K4_9tmh|+V>Fu6@~Ss?8gnCj|TA+M`h{Ml<#?? zQ7>{DBQg{;@Vnq%rr;m80q>HaUcaufgX~2K+)lrvSRjl~P|P81|Ckal+?%zR3Gc~w zVRxfKr;5C=uu-^xAE62x1+HYQZ>WASx{xf+$g>=`U))TlK*Of0ikculMeRj3`P|69 z&cav)Vy$i9T+Vk8^t$;Tu_Mj_o4$Vd8G<>1c9k57>2(bR94aIMluA1koULKld2V1v5HYLf( zB80!p{8KvI0n5dx>cMHDKmrow3kME^|JLEiu=i0)LbjQZiUCFu+zs{u<1;0P0iW1CRTZ?7rJdj#4q)(P>P?UyrvVYwJDrII!uv>0N$F7vBfJXs- z35YQP>A{(AaN?uhLMZ4CA_Gjyp-QX7?GGY7w!<$(P5lzBh8-(As9BxqJ-NO<;H|Wq zzf*+;3ioUkw!f%>5&wPBt=CVZ)5j(u3Nqt2%dF#hF76E&=dXQ{L7oe$nz`-Of1`Q$ z?8Gf;1PcDG5-@}QCuYpnKRZGGK!d(#U|)fqwdyRCXa_+;6;uV-qnr9C%pB_1_i0oe zKZ^V$spJ3a)-R@fk)-l^|027LM|LB-kZA3d_8x2eALv^{NWyOQ!dYMi|3!dF1y|B_ zF>Wz6yoxINb4Q|*KSfKIwm@Grg1+|fmri))z4c;&OUN%DxrlJF;6{9WSXF5++rE9# zgXsIZcZ0$Q#rqdo&;1WMgT7@fp@tF@7wq=Zdj43YLM ziaI!S|2*ps<(BKl{L}oV?xk*}BB{X7ih5(n5BU97*4Uqr%81e)toz#Dngq|{Tbwl( zo-aJV#q{#5m|e(Sz%D#f5Wa&9XHX1fvtsDO{GbkZTrl7(ySTH*wprHFW?NBM=lZRt z{GD|&15wCsTm@-4-H{5T3cOjA(LL$4ULM+-rge{!7G!$so))b*EI5S7xxSue{nnziZ|a0dgG(V;5qUWyK4rAQd3L+7dE)|Dg8)|4w;J`?bSZe0{x|227U>k%>W+b zljrjI#)b}OLDVTDvobt#Be=^WIF~=?M+yzE0gnc*P`?1XWqj(^(PW)&uNd{?eh;kz z-gm*H<6HZ%bFSD2>_wye3M{7`Qr;J4=gAFw-gEk-L-LVFD+CW(Bn6pCQjU}d7DB`a zXukg-~e=oYZyxDhY`cEj$Kr@g-=I7r6JnHky0Z1@Xvi-16 zNo6bk#(+^_#L+Mu=R5E+J|hgJH9#0kN0jX z(t3Q>mo~>oS~uMzJOCbs_yqD5VBPp93M`6mwm01JL&f#`=AVJ=0LQr;cosh z$?H|U8XPv?x)mT=(<1a}6F~KwwfD3`J^c{fyL5~7-lrcNsXlvT-$RxQq;)15OD8ye z;xX1AYoENgNSFe2ZlKvmy(pCTx5{U=?MD)T{5(k9??SeD7n%X{liJHcXJD*9Sp#-PRswv{67O;#-To({C;k&Z z4_r!{fnBZtl3qSzl#eQRukOCN`zEr1=$z2M!2h5a_+xqSp>e*_iV@#MZ+(7rE~h&` z=KL=D)xbw-i)z0L9-S_Wn9su@?qK_Z-m+$VPWCu0pwfTep!SeIC+n9eI*zvbOdz$nU zv1PFbX#U~`2DtVi`62mY@w?w&YxenMqYqy5=kEGZ_A=a_zq^VJ>e!)Sh=CtP1PFxx z6|B$~a8IY`XbbdP`5(J_`66%{@M;nN&8iHMzZVeS?Vsg;ywl+O#eMiy?U&R7Fn>Xv zUz^99QGOP){ER$<8mCHA`X|0!l@I?}`NxV@p5}*Wmr23${wn4H*7$RVeSHz-(+zp1 zXnZa-vNLk^pVd8serkS6mUOC6f%v^rXr=3TDrc45y59e26ITyVr6@lA;PvU#-^?Ax z4f<3RvdY3w8P10AbECx48>naFEjPN4$bvK*=FAkmkp88z>5KG^F@K=En%6~yK4Co; z0KK}tKBY3e7K&LJGkc2p8_Kq_xorJH-7^jd)Ob!U=>2A{fZwVNo8+SA!&)e$8|il1m-f}h_3;;P)9PydSLstm<`Vg^+1v>m^Mk$b zKlC31KYe~^w>1BVQ-3ACYtz2q0DmLA^|Wxyg!h!bcQpJl$``0d^~`yxp3TWsmd(_& z<%Q#B@E<37{qX3sr6u@J`7mi0g<3kE{w#D#-r7;N-t{t6s_ zu}tl3X~)2i;*dOq7Osjy`YL@@=)iw1gov6S_av?V@K{?Y%N_X4<>8rD29BHiL)FJu zJVd_^W%4pa1jo`xcn@H{o8BFRKEXS!irl7sOwIh7LH=Xx0?0!b*8ZWF4>EioYpy7K zflgwD@M|IS=fN)1>fbM3Eg1f3fWXrlpUMI}{dSG^rJ|Jn@&Y{mt86&-{@?evX4L}Q zmSDSE5?4IsrxS(FFnfPt2?>6v!m*yXH4G~*9wjDRhS2c=oRa(zx7mx>YA)9fech6$c z1i`IktjG>g9;J?*0|{Z~JX_9OoL}r223SS-=FtpeeKD^^p54l}7i$0HVYB~HqF?YC z^{1oc*+>3;-<1E~@;^-cq4tk5HyF>ZXWJz;TgU3~fBv;?;3wq=4xHomh;PJ@A6QcF zz<%sb%Wu?gae0Se`6`62zO3C)3(DyEmw$}5M*}m4{FHbFI(cA~1^x>0o5EuAI)6;Q z8A1Y_%?$MCFO-jvSLWS2PhXq zzvHMzt9Op?`~mx`i;3TLxMRpILh>d+qg(@T1?wz7C;vQu!+=|)a7Z4{jGy{y>?-69 zjUn3Q{8Bvo!GJ>=g}7nfaj$QeQ6x-%D23?Qm2ACRp8Jqf@5|PmBX)HE=zi;dh4RZ~ z-M#Yn`Ry7#tahK@uhD~e_y+{XjXfGYz26#djF<1IY#kBOpsfzUk20Ir%L_rAJgRg6 z>+H%nWFXP~D3_AUY%Xck?~R<_h5ib*#h?yR+}5LSqeXu>dqD_D`W=ls-HKd9z2oO7 z56io#J*UnY^ij~Pbs{{Hj)1d`QjT(X7v`V|GTMhG5mznpYF->q=?iF3)3uo22AymbVJDPuQ#wRoT=YfApckfytWz>rs_8^ber&L$F$d^*3a5jwYxqY#^aM`P=xNus@$5`}5uYHOgRW$~TPhdkHH% zJm`q6JITKI-}(>ha9Z3dqUn>$lttT!u1vi|FAz`SxCt}&DquIH^~}^ z_D?|1Fj4X4ZoBE$XO`EnA8@Zd&?5On0Jp)v!}~e|L2(hQlaCH&;Tt>H^^Z0853O#< zABBI$fLp|U*tGA`d)L2W`uCXq*X0vt|8)FfJ^On5r}zarOdf8a?7oycHGo)F`PB9P zYw~a8CU?2Q;J0x5@819Q_CMdWT@Hk$i$o8{Kbc>oo_!!>Bpyt_wyi20i$8dXJmaO8 zw}TBp7DNjrjvmCPDg89zI{w~2vBA$Mhv?sZ9s4KsllPO&;Ra4Z2ICX`Vs5;ixK=;L zmjLz&q4n7pnwQ5L&nNg}0Utf+b?!==eVc*J5$*=3b-g@jk8H>8u>0X16SRjuzZm&m ztKR58(KN((LH-I$(A?#pz=1pDA25jg$K)U2cAN1d_3=}`N8a9haqq>*A)WGsYuC&7 zb%q?n9Z(RJyfm@KhW)KMKXyyd+rQ&0hXQ?JM+foY7MJ(0m$!H&?;Tb0L(<~M9yu*l z%=jE;`*bUgfYK_6hfXJEPA}daA9BJV1`wrbxW z0|$AH9-IB6@tJ#&&H-xmdjBxy^}%&pb0ByF+!lWTXtnWy)BY3n&`Nf69_{bzr?;%p9!Ls>q?lCL_3;BgRd~JR z*v?=W_IW!C=iztP;ncp}I}mg?DNjA&M~^-ceL?x4(sWctUV9d$qMSi4zk^J4TP zn1g+Sk=n2M-_iJ~cIr35$%34yq$%GaxZO*h6Ba@DpP=tJcRp<&^a{Eg`UIXIIlQ#HMy?$H5hI_ItAt`vXRO0XS+Y8N?b?3>h_nTleW3diyj3 zHpFRyVYfEk0r+ZOFK=6kD3E~Z?+Sg>j1Qufho6K9D~x;3ZF2)1@i>b7$Yy*Py?$`I zm{MSpuK%ma`0IN8`ssmF0sJR4s&Bj*lYiIC_c;*5WQ?sN`|nstDmG!Cd5!+*qtkC8 zpns|h=wRAEQ+bl_(s$?^SWQI0bqLl^_7_8h(zwIISrhgQu)PT(ALjM`(ano6T*nU` z1Fyr;AkGg2e$wtZnB&SsUB?h=pHA<{uY*ln*n{70Y5bKte7*d@Rj^8)BNM-14i2UK zV$f&khp0U5UtNp&NcZ0PH~e#f&sWN+GR6K$?Wf?O2o1FM(&x`%xq-NZp-vw50oeT% zLo;z5u8)hT3|0cMAa1)&|9PW)LQFvaS`jO(H5whYkFGhQ*UJkhu&vl|R^4?^3;A8^ ze%N4KhtrJrU-d&uKwJRv0iV`?1Nl!1S&ATRXt@0MPv<3_+6v(; z>ecTles%(Q!b6%Q86GxyF|(BH!HK)EP~2m}0+m_^5902@?Ox$T;L1Ti@-!iGX**qs z+7q9^F)#4)f%lRcIwdc_Mc8@u%0spf`e1zlzfP4n7yaFXTcFpo*>ST?kcDa>ldXp! z!|TC8zxeRsaNe&>Zx1zxU*9|zg3goca7ooxunO;N*8*ArB++Tow+74~puia9W3i?a?Y) z0`K8)e9HfOc0TsR3K&x43Kn0T($uTx$F2Vc>7 zgZs{9uRPs;AVt6p6LA?Y5$UG6u=}*!gWE1`!I9>0xsV<>F1&W1^u2Lhdakukw=dNC z0C{R`W6iPV?K4D(*NYqUPs87YX! z$^EAPaQJ*oh_=3Z`EZ-oiujNxtG)VZeUSA75Qi`}GaknqHhtIO{(J-(0+0bC=YfX~ zc+k3^$1r()*{kkF^u@7)8Kt{D!x19WKGQ zLE5wDq?YtI|0}(G|IFQZw&n6mYT?*@=*wRZB4j8D-TxGIk%ryyKke>6=zw82v7zPpfgbkm#`HD( zbc4IeAuq--XR!i*sLsiALGc=Yq}ymYj{V$I6=BJhftJAZAHq!m`x2N-dg2viFJD2n zDMUllM~}~_bb>RH8*iMAVe*jco{v--qx*jRYT^g)6;7bw#O312{N4kj0>umG5y;@J z+twD_n%FJvJl^@d-FJ51=wIK8ok`WPs>H^tqXP1z9gNz>53+xm_cIARkF6>RHoOH_Suq_>AEuk>B9m{ZHyneG!nzrs67e~Z zf^UjX)$qXjZs_CCJNE&i^ZaR)2Pe-sVrvTDkd$4x!EXqILIHwj9Zs=O6hzI5Rp?=m zD~nnNpl*C!i=(6Le?t#f4l{>0@C+Wd54-lCkfkyKpL zD$vT{r(F3D^*<^DmH%D2US8o})$~Wxvxrm@)i6Xd8szbZ}OY92><%*Gh_U)mW0p6SCv>RcJ$Se(sI|oIB*}B)@3At zhv(!fyt>kp=~8+&JyN*2IdsFKn`>@TsUnl_AUzZXd?@l#b)j(fp6? zkw2Dxq;rPOG3N{GuF~DVbTiPY0NH0QJVzE|tgmFOuK@d5Xr79(L(Ko5>`KhT2e;Th z@3!wn{9_*5)E>_AVi7r(J}zyV<41X)qQ?BOFlH#o67UXAdXh_u-g_FKxTiFy*Qa-; zxzd@%**e5M`%4f78RG*-sZ_qg41EO(H=}y;V%}3&s#$+A;EFRt_60x-;s$@$$~Y@4NHE*nv@hQ0OR!)0JsH zjeg9iL-`@CeVfs~qTINYc1h;t;ZMx@UAO*h?hlB%J4!3|JXVHPwu8Aw-~;Eura;6A z?FIj`u#%cOMg1F!Fw5QbA=Oh`s+n*n7cwjub7A(L$2faF@?7NNbN<{Mzw?9ehw{hN zAJb=e|H00N{}}#b2=_O0f06%7Nwb-r+MnX=w_!F^^K5kIrmm~2e7r`xOz zc)?RE^yb%#*jDd>T{C!B7)R|po&)oCOZpj{+sLp1sAUSL;81x8Cnc*`>c;r~gym^< z`f92%U7rSzCDw=P?pD5KY3Xq6kJZu^s1x3$t=aa-+0C}}F1czO)ZwOFgR$iVUGLR>Jm zItwq#;j{+A(z|dSPBD3GxUuxz2oDj5 ze(Ok52afuGVrNGAeSw$uk>N!1Y*G@K{if$lK{4Y8iI^XK{U_n6J^OOxC45z1e*4n$ zn_k{|DIlvS^0O4C&n9!F)=lMRYh<~Qwx$jEhI4~8CO1L9PD}EvJi>>X?!#{nZO2CY zG=Ey#nq4~|{%ttssV$e`bf Kd`--tOI`G13MF&`m6rnbJ= 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