Skip to content

Commit 92a73bb

Browse files
Merge pull request #654 from Cypherock/feat/vendor-abstraction
feat: Vendor abstraction - odix
2 parents 2de49c0 + fe6dff6 commit 92a73bb

12 files changed

Lines changed: 285 additions & 64 deletions

File tree

.github/workflows/build.yml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@ jobs:
1515
matrix:
1616
firmware: [Main]
1717
target: [Release]
18+
vendor: [Cypherock, Odix]
1819
uses: ./.github/workflows/containerized-build.yml
1920
with:
2021
firmware: ${{ matrix.firmware }}
2122
target: ${{ matrix.target }}
23+
vendor: ${{ matrix.vendor }}
2224
secrets: inherit
2325
create-release:
2426
needs: build-firmwares
@@ -37,16 +39,18 @@ jobs:
3739
auth_token: ${{ secrets.GITHUB_TOKEN }}
3840
REPOSITORY: ${{ github.repository }}
3941
run: |
40-
chkmain=$(sha256sum Main-Release-outputs/Cypherock-Main.bin | cut -f -1 -d ' ')
42+
chkmain=$(sha256sum Main-Release-Cypherock-outputs/Cypherock-Main.bin | cut -f -1 -d ' ')
43+
chkmain_odix=$(sha256sum Main-Release-Odix-outputs/Cypherock-Main-Odix.bin | cut -f -1 -d ' ')
4144
APP_VERSION=$(cat version.txt | grep firmware | cut -f 2-2 -d '=' | awk -F ':' '{ print 0+$1 "." 0+$2 "." $3*2**8 + $4 }')
4245
HW_VERSION=$(cat version.txt | grep hardware | cut -f 2-2 -d '=' | awk -F ':' '{ print 0+$1 "." 0+$2 "." $3*2**8 + $4 }')
4346
echo ${APP_VERSION}:${HW_VERSION}
44-
curl -X POST -H "Accept: application/vnd.github+json" -H "Authorization: Bearer ${auth_token}" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/${REPOSITORY}/releases -d '{"tag_name":"'${TAG_NAME}'","target_commitish":"main","name":"'${TAG_NAME}'","body":"Application version: '${APP_VERSION}'\r\nHardware version: '${HW_VERSION}'\r\n## SHA256 of binaries:\r\n**Cypherock-Main.bin** : '${chkmain}'","draft":true,"prerelease":false,"generate_release_notes":true}' > output.txt
47+
curl -X POST -H "Accept: application/vnd.github+json" -H "Authorization: Bearer ${auth_token}" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/${REPOSITORY}/releases -d '{"tag_name":"'${TAG_NAME}'","target_commitish":"main","name":"'${TAG_NAME}'","body":"Application version: '${APP_VERSION}'\r\nHardware version: '${HW_VERSION}'\r\n## SHA256 of binaries:\r\n**Cypherock-Main.bin** : '${chkmain}' \r\n**Cypherock-Main-Odix.bin** : '${chkmain_odix}'","draft":true,"prerelease":false,"generate_release_notes":true}' > output.txt
4548
echo "upload_url=$(cat output.txt | grep "\"upload_url\":" | cut -f 4-4 -d '"' | cut -f 1-1 -d '{')" >> $GITHUB_ENV
4649
- name: Upload assets
4750
env:
4851
auth_token: ${{ secrets.GITHUB_TOKEN }}
4952
run: |
50-
content_type=$(file -b --mime-type Main-Release-outputs/Cypherock-Main.bin)
51-
curl -X POST -H "Content-Type: ${content_type}" -H "Accept: application/vnd.github+json" -H "Authorization: Bearer ${auth_token}" -H "X-GitHub-Api-Version: 2022-11-28" ${upload_url}?name=Cypherock-Main.bin --data-binary @Main-Release-outputs/Cypherock-Main.bin
53+
content_type=$(file -b --mime-type Main-Release-Cypherock-outputs/Cypherock-Main.bin)
54+
curl -X POST -H "Content-Type: ${content_type}" -H "Accept: application/vnd.github+json" -H "Authorization: Bearer ${auth_token}" -H "X-GitHub-Api-Version: 2022-11-28" ${upload_url}?name=Cypherock-Main.bin --data-binary @Main-Release-Cypherock-outputs/Cypherock-Main.bin
55+
curl -X POST -H "Content-Type: ${content_type}" -H "Accept: application/vnd.github+json" -H "Authorization: Bearer ${auth_token}" -H "X-GitHub-Api-Version: 2022-11-28" ${upload_url}?name=Cypherock-Main-Odix.bin --data-binary @Main-Release-Odix-outputs/Cypherock-Main-Odix.bin
5256
curl -X POST -H "Content-Type: ${content_type}" -H "Accept: application/vnd.github+json" -H "Authorization: Bearer ${auth_token}" -H "X-GitHub-Api-Version: 2022-11-28" ${upload_url}?name=version.txt --data-binary @version.txt

.github/workflows/containerized-build.yml

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,30 +9,34 @@ on:
99
target:
1010
required: true
1111
type: string
12+
vendor:
13+
required: true
14+
default: "Cypherock"
15+
type: string
1216

1317
jobs:
1418
build:
1519
runs-on: ubuntu-latest
1620
container:
1721
image: cypherock/x1-firmware-builder:v0.0.0
1822
steps:
19-
- name: Build Firmware (${{ inputs.firmware }} - ${{ inputs.target }})
20-
run: |
21-
if [[ "${{ github.ref_type }}" == "tag" ]]; then
22-
export VERSION_TAG=$(echo "${{ github.ref }}" | cut -f 3- -d '/')
23-
elif [[ "${{ github.ref_type }}" == "branch" ]]; then
24-
export VERSION_TAG=$(echo "${{ github.ref }}" | cut -f 3- -d '/')
25-
else
26-
# reftype is repository; use default branch
27-
export VERSION_TAG=main
28-
fi
29-
git clone --branch ${VERSION_TAG} --depth 1 https://github.com/${{ github.repository }}.git --recurse-submodules
30-
mkdir build && cd x1_wallet_firmware && mkdir build && cd build
31-
cmake -DCMAKE_BUILD_TYPE="${{ inputs.target }}" -DFIRMWARE_TYPE="${{ inputs.firmware }}" -DCMAKE_BUILD_PLATFORM="Device" -G "Ninja" ..
32-
ninja && cd ../..
33-
cp x1_wallet_firmware/build/Cypherock-*.* ./build/
34-
- name: Archive Build Artifacts
35-
uses: actions/upload-artifact@v4
36-
with:
37-
name: ${{ inputs.firmware }}-${{ inputs.target }}-outputs
38-
path: build
23+
- name: Build Firmware (${{ inputs.firmware }} - ${{ inputs.target }})
24+
run: |
25+
if [[ "${{ github.ref_type }}" == "tag" ]]; then
26+
export VERSION_TAG=$(echo "${{ github.ref }}" | cut -f 3- -d '/')
27+
elif [[ "${{ github.ref_type }}" == "branch" ]]; then
28+
export VERSION_TAG=$(echo "${{ github.ref }}" | cut -f 3- -d '/')
29+
else
30+
# reftype is repository; use default branch
31+
export VERSION_TAG=main
32+
fi
33+
git clone --branch ${VERSION_TAG} --depth 1 https://github.com/${{ github.repository }}.git --recurse-submodules
34+
mkdir build && cd x1_wallet_firmware && mkdir build && cd build
35+
cmake -DCMAKE_BUILD_TYPE="${{ inputs.target }}" -DFIRMWARE_TYPE="${{ inputs.firmware }}" -DCMAKE_BUILD_PLATFORM="Device" -DVENDOR="${{ inputs.vendor }}" -G "Ninja" ..
36+
ninja && cd ../..
37+
cp x1_wallet_firmware/build/Cypherock-*.* ./build/
38+
- name: Archive Build Artifacts
39+
uses: actions/upload-artifact@v4
40+
with:
41+
name: ${{ inputs.firmware }}-${{ inputs.target }}-${{ inputs.vendor }}-outputs
42+
path: build

CMakeLists.txt

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,22 @@ else()
1313
set(PROJECT Cypherock_Simulator)
1414
endif()
1515

16+
# Replace this with actual vendors
17+
if ("${VENDOR}" STREQUAL "Odix")
18+
add_compile_definitions(VENDOR_NAME="Odix Wallet")
19+
add_compile_definitions(VENDOR_COMPANION_APP="Odix")
20+
add_compile_definitions(VENDOR_DEVICE_NAME="Odix Wallet")
21+
add_compile_definitions(VENDOR_COMPANY_NAME"Odix")
22+
set(PROJECT ${PROJECT}-Odix)
23+
add_compile_definitions(VENDOR_ID=1)
24+
else()
25+
add_compile_definitions(VENDOR_NAME="Cypherock X1 Wallet")
26+
add_compile_definitions(VENDOR_COMPANION_APP="cySync")
27+
add_compile_definitions(VENDOR_DEVICE_NAME="Cypherock X1")
28+
add_compile_definitions(VENDOR_COMPANY_NAME"Cypherock")
29+
add_compile_definitions(VENDOR_ID=0)
30+
endif()
31+
1632
project(${PROJECT})
1733

1834
# python is needed for compiling proto files using nanopb
@@ -56,4 +72,4 @@ target_include_directories( ${EXECUTABLE} PRIVATE vendor/nanopb generated/proto
5672

5773
# Enable support for dynamically allocated fields in nanopb
5874
# Ref: vendor/nanopb/pb.h
59-
add_compile_definitions(PB_ENABLE_MALLOC=1 PB_NO_ERRMSG=1)
75+
add_compile_definitions(PB_ENABLE_MALLOC=1 PB_NO_ERRMSG=1)

common/cypherock-common

common/interfaces/user_interface/ui_logo.c

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,17 +61,32 @@
6161
#include "events.h"
6262
#include "ui_multi_instruction.h"
6363

64+
#if VENDOR_ID == 0 // cypherock
6465
LV_IMG_DECLARE(cypherock_logo);
66+
#define VENDOR_LOGO_LIST cypherock_logo
67+
#define VENDOR_LOGO_COUNT 1
68+
69+
#elif VENDOR_ID == 1 // odix
70+
LV_IMG_DECLARE(odix_logo);
71+
LV_IMG_DECLARE(cypherock_vendor_logo);
72+
#define VENDOR_LOGO_LIST odix_logo, cypherock_vendor_logo
73+
#define VENDOR_LOGO_COUNT 2
74+
75+
#endif
6576

6677
void logo_scr_init(const uint16_t delay_in_ms) {
67-
instruction_content_t logo_content = {
68-
.img = &cypherock_logo,
69-
.img_x_offset = (128 - (cypherock_logo.header.w)) >> 1,
70-
.img_y_offset = (64 - (cypherock_logo.header.h)) >> 1,
71-
.text = "",
72-
.text_align = LV_ALIGN_CENTER};
78+
const lv_img_dsc_t logos[] = {VENDOR_LOGO_LIST};
79+
80+
for (int i = 0; i < VENDOR_LOGO_COUNT; i++) {
81+
instruction_content_t logo_content = {
82+
.img = &logos[i],
83+
.img_x_offset = (128 - (logos[i].header.w)) >> 1,
84+
.img_y_offset = (64 - (logos[i].header.h)) >> 1,
85+
.text = "",
86+
.text_align = LV_ALIGN_CENTER};
7387

74-
multi_instruction_with_image_init(&logo_content, 1, 0, false);
75-
lv_task_handler();
76-
BSP_DelayMs(delay_in_ms);
77-
}
88+
multi_instruction_with_image_init(&logo_content, 1, 0, false);
89+
lv_task_handler();
90+
BSP_DelayMs(delay_in_ms);
91+
}
92+
}

common/interfaces/user_interface/ui_logo.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,4 @@
2929
*/
3030
void logo_scr_init(uint16_t delay_in_ms);
3131

32-
#endif
32+
#endif
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
#ifdef __has_include
2+
#if __has_include("lvgl.h")
3+
#ifndef LV_LVGL_H_INCLUDE_SIMPLE
4+
#define LV_LVGL_H_INCLUDE_SIMPLE
5+
#endif
6+
#endif
7+
#endif
8+
9+
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
10+
#include "lvgl.h"
11+
#else
12+
#include "lvgl/lvgl.h"
13+
#endif
14+
15+
16+
#ifndef LV_ATTRIBUTE_MEM_ALIGN
17+
#define LV_ATTRIBUTE_MEM_ALIGN
18+
#endif
19+
20+
#ifndef LV_ATTRIBUTE_IMG_CYPHEROCK_VENDOR_LOGO
21+
#define LV_ATTRIBUTE_IMG_CYPHEROCK_VENDOR_LOGO
22+
#endif
23+
24+
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CYPHEROCK_VENDOR_LOGO uint8_t cypherock_vendor_logo_map[] = {
25+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
26+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
27+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
28+
0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00,
29+
0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00,
30+
0x00, 0x00, 0x06, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00,
31+
0x00, 0x00, 0x06, 0x00, 0x38, 0x1c, 0x31, 0x8d, 0x0f, 0x03, 0xe0, 0x1b, 0x0c, 0x60, 0x00, 0x00,
32+
0x00, 0x00, 0x03, 0x00, 0xec, 0x36, 0x31, 0x8f, 0x1b, 0x8e, 0xe0, 0x1d, 0x84, 0x60, 0x00, 0x00,
33+
0x00, 0x00, 0x01, 0xe0, 0xc4, 0x63, 0x31, 0x8c, 0x11, 0x8c, 0x60, 0x18, 0xc6, 0x40, 0x00, 0x00,
34+
0x00, 0x00, 0x00, 0x70, 0xfc, 0x60, 0x31, 0x8c, 0x1f, 0x8c, 0x60, 0x18, 0xc6, 0xc0, 0x00, 0x00,
35+
0x00, 0x00, 0x00, 0x18, 0xfc, 0x60, 0x31, 0x8c, 0x3f, 0x8c, 0x60, 0x18, 0xc2, 0xc0, 0x00, 0x00,
36+
0x00, 0x00, 0x06, 0x18, 0x80, 0x62, 0x31, 0x8c, 0x10, 0x0c, 0x60, 0x18, 0xc3, 0x80, 0x00, 0x00,
37+
0x00, 0x00, 0x03, 0x38, 0xc4, 0x26, 0x1b, 0x8c, 0x19, 0x8c, 0xe0, 0x1d, 0x83, 0x80, 0x00, 0x00,
38+
0x00, 0x00, 0x01, 0xf0, 0x78, 0x3c, 0x1f, 0x8c, 0x0f, 0x07, 0xe0, 0x1f, 0x81, 0x80, 0x00, 0x00,
39+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
40+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
41+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
42+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
43+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
44+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
45+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
46+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48+
0x02, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49+
0x07, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50+
0x05, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51+
0x08, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52+
0x18, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53+
0x11, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
54+
0x23, 0x23, 0x00, 0xff, 0xbc, 0x39, 0xff, 0x38, 0x33, 0xfe, 0x7f, 0xe3, 0xfe, 0x0f, 0xf3, 0x1c,
55+
0x66, 0x1f, 0x01, 0xff, 0x1c, 0x73, 0xff, 0xb8, 0x33, 0xfc, 0x7f, 0xe7, 0xff, 0x3f, 0xe3, 0x38,
56+
0xfc, 0x00, 0x01, 0x80, 0x0e, 0x60, 0x03, 0xb8, 0x73, 0x00, 0x00, 0x76, 0x03, 0xb8, 0x03, 0xf0,
57+
0x00, 0x00, 0x01, 0x80, 0x07, 0xe0, 0x03, 0xbf, 0xf3, 0xfc, 0x00, 0xe6, 0x03, 0xb0, 0x03, 0xe0,
58+
0x00, 0x00, 0x01, 0x80, 0x03, 0xc3, 0xff, 0x3f, 0xf3, 0xf8, 0xff, 0xe6, 0x03, 0xb0, 0x03, 0xf0,
59+
0x7e, 0x1f, 0x01, 0xc0, 0x01, 0x83, 0xfc, 0x38, 0x33, 0x00, 0xff, 0xc7, 0x07, 0x3c, 0x03, 0x78,
60+
0x62, 0x33, 0x00, 0xff, 0x81, 0x83, 0x00, 0x38, 0x33, 0xfe, 0xe0, 0xe3, 0xff, 0x1f, 0xf3, 0x1c,
61+
0x31, 0x22, 0x00, 0x7f, 0x01, 0x83, 0x00, 0x38, 0x33, 0xfc, 0xe0, 0x71, 0xfc, 0x07, 0xe3, 0x0e,
62+
0x18, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
63+
0x08, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
64+
0x0c, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
65+
0x07, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
66+
0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
67+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
68+
};
69+
70+
const lv_img_dsc_t cypherock_vendor_logo = {
71+
.header.cf = LV_IMG_CF_ALPHA_1BIT,
72+
.header.always_zero = 0,
73+
.header.reserved = 0,
74+
.header.w = 128,
75+
.header.h = 43,
76+
.data_size = 688,
77+
.data = cypherock_vendor_logo_map,
78+
};
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
#ifdef __has_include
2+
#if __has_include("lvgl.h")
3+
#ifndef LV_LVGL_H_INCLUDE_SIMPLE
4+
#define LV_LVGL_H_INCLUDE_SIMPLE
5+
#endif
6+
#endif
7+
#endif
8+
9+
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
10+
#include "lvgl.h"
11+
#else
12+
#include "lvgl/lvgl.h"
13+
#endif
14+
15+
16+
#ifndef LV_ATTRIBUTE_MEM_ALIGN
17+
#define LV_ATTRIBUTE_MEM_ALIGN
18+
#endif
19+
20+
#ifndef LV_ATTRIBUTE_IMG_ODIX_LOGO
21+
#define LV_ATTRIBUTE_IMG_ODIX_LOGO
22+
#endif
23+
24+
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_ODIX_LOGO uint8_t odix_logo_map[] = {
25+
0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
26+
0x00, 0x03, 0xe0, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
27+
0x00, 0x0e, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
28+
0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
29+
0x00, 0x60, 0x1f, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
30+
0x00, 0x81, 0xf9, 0xf0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
31+
0x01, 0x07, 0x00, 0x1c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
32+
0x02, 0x0c, 0x00, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
33+
0x04, 0x30, 0x00, 0x01, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34+
0x08, 0x60, 0x7f, 0xc0, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
35+
0x18, 0xc1, 0xc0, 0x70, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
36+
0x10, 0x83, 0x00, 0x18, 0x31, 0x00, 0x03, 0xf0, 0x00, 0x7f, 0x00, 0x06, 0x00, 0xc0, 0x60,
37+
0x21, 0x04, 0x00, 0x04, 0x10, 0x80, 0x07, 0xf8, 0x00, 0x7f, 0xc0, 0x06, 0x00, 0xe0, 0x60,
38+
0x23, 0x08, 0x00, 0x02, 0x18, 0x80, 0x0e, 0x1c, 0x00, 0x61, 0xe0, 0x06, 0x00, 0x60, 0xe0,
39+
0x62, 0x10, 0x00, 0x01, 0x08, 0x40, 0x0c, 0x0e, 0x00, 0x60, 0xe0, 0x06, 0x00, 0x70, 0xc0,
40+
0x46, 0x30, 0x00, 0x00, 0x8c, 0x40, 0x1c, 0x06, 0x00, 0x60, 0x60, 0x06, 0x00, 0x31, 0xc0,
41+
0x44, 0x20, 0x00, 0x00, 0x84, 0x40, 0x1c, 0x06, 0x00, 0x60, 0x70, 0x06, 0x00, 0x39, 0x80,
42+
0x44, 0x60, 0x00, 0x00, 0xc4, 0x60, 0x1c, 0x06, 0x00, 0x60, 0x70, 0x06, 0x00, 0x1b, 0x80,
43+
0xc4, 0x40, 0x00, 0x00, 0x46, 0x20, 0x1c, 0x06, 0x00, 0x60, 0x70, 0x06, 0x00, 0x1f, 0x00,
44+
0x8c, 0x40, 0x00, 0x00, 0x46, 0x20, 0x1c, 0x06, 0x00, 0x60, 0x70, 0x06, 0x00, 0x0f, 0x00,
45+
0x8c, 0x40, 0x00, 0x00, 0x42, 0x20, 0x1c, 0x06, 0x00, 0x60, 0x70, 0x06, 0x00, 0x0e, 0x00,
46+
0x88, 0x40, 0x00, 0x00, 0x42, 0x20, 0x1c, 0x06, 0x00, 0x60, 0x70, 0x06, 0x00, 0x0e, 0x00,
47+
0x8c, 0x40, 0x00, 0x00, 0x42, 0x20, 0x1c, 0x06, 0x00, 0x60, 0x70, 0x06, 0x00, 0x0f, 0x00,
48+
0x8c, 0x40, 0x00, 0x00, 0x42, 0x20, 0x1c, 0x06, 0x00, 0x60, 0x70, 0x06, 0x00, 0x1f, 0x00,
49+
0xc4, 0x40, 0x00, 0x00, 0x46, 0x20, 0x1c, 0x06, 0x00, 0x60, 0x70, 0x06, 0x00, 0x1b, 0x80,
50+
0x44, 0x60, 0x00, 0x00, 0x44, 0x60, 0x1c, 0x06, 0x00, 0x60, 0x70, 0x06, 0x00, 0x39, 0x80,
51+
0x44, 0x20, 0x00, 0x00, 0x84, 0x40, 0x1c, 0x06, 0x00, 0x60, 0x70, 0x06, 0x00, 0x31, 0xc0,
52+
0x46, 0x30, 0x00, 0x00, 0x8c, 0x40, 0x1c, 0x06, 0x00, 0x60, 0x60, 0x06, 0x00, 0x70, 0xc0,
53+
0x62, 0x10, 0x00, 0x01, 0x08, 0x40, 0x0c, 0x0e, 0x00, 0x60, 0x60, 0x06, 0x00, 0x60, 0xe0,
54+
0x23, 0x08, 0x00, 0x03, 0x08, 0x80, 0x0e, 0x1c, 0x00, 0x61, 0xe0, 0x06, 0x00, 0xe0, 0x60,
55+
0x21, 0x04, 0x00, 0x06, 0x10, 0x80, 0x07, 0xfc, 0x00, 0x7f, 0xc0, 0x06, 0x00, 0xc0, 0x70,
56+
0x11, 0x82, 0x00, 0x0c, 0x31, 0x00, 0x03, 0xf0, 0x00, 0x7f, 0x00, 0x06, 0x00, 0xc0, 0x30,
57+
0x18, 0xc1, 0xc0, 0x30, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
58+
0x08, 0x60, 0x7f, 0xc0, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
59+
0x04, 0x30, 0x00, 0x01, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
60+
0x06, 0x1c, 0x00, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
61+
0x03, 0x07, 0x00, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
62+
0x01, 0x81, 0xe0, 0xf0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
63+
0x00, 0x40, 0x3f, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
64+
0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
65+
0x00, 0x0c, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
66+
0x00, 0x03, 0xc0, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
67+
0x00, 0x00, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
68+
};
69+
70+
const lv_img_dsc_t odix_logo = {
71+
.header.cf = LV_IMG_CF_ALPHA_1BIT,
72+
.header.always_zero = 0,
73+
.header.reserved = 0,
74+
.header.w = 116,
75+
.header.h = 43,
76+
.data_size = 645,
77+
.data = odix_logo_map,
78+
};

0 commit comments

Comments
 (0)