Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 0 additions & 29 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -4,32 +4,3 @@
# Default owner
* @husamettinarabaci

# Module-specific owners

## Firmware
/firmware/ @husamettinarabaci

## Hardware
/hardware/ @husamettinarabaci

## Mechanic
/mechanic/ @husamettinarabaci

## Documentation
/docs/ @husamettinarabaci

## Tests
/integration-tests/ @husamettinarabaci

## Benchmarks
/benchmarks/ @husamettinarabaci

## Examples
/examples/ @husamettinarabaci

## Scripts
/scripts/ @husamettinarabaci

## GitHub
/.github/ @husamettinarabaci

20 changes: 20 additions & 0 deletions .github/workflows/auto-add-project.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# SPDX-FileCopyrightText: 2025 hexaTune LLC
# SPDX-License-Identifier: MIT

name: Auto add issues and PRs to hTuneSys Project 16

on:
issues:
types: [opened]
pull_request:
types: [opened]

jobs:
add-to-project:
runs-on: ubuntu-latest

steps:
- uses: actions/add-to-project@v0.5.0
with:
project-url: https://github.com/orgs/hTuneSys/projects/16
github-token: ${{ secrets.ORG_PROJECT_TOKEN }}
2 changes: 1 addition & 1 deletion .github/workflows/commitlint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ permissions:

jobs:
commitlint:
name: Commit Lint (hexaTuneWeb)
name: Commit Lint (hexaGenApp)
runs-on: ubuntu-latest
steps:
- name: Checkout (full history)
Expand Down
2 changes: 1 addition & 1 deletion hexagenapp/android/app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -68,5 +68,5 @@ flutter {
}

dependencies {
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4")
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.4")
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
1 change: 1 addition & 0 deletions hexagenapp/android/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError
org.gradle.java.home=/usr/lib/jvm/java-21-openjdk
android.useAndroidX=true
android.enableJetifier=true
47 changes: 47 additions & 0 deletions hexagenapp/ios/Frameworks/HexaTuneProto.xcframework/Info.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AvailableLibraries</key>
<array>
<dict>
<key>BinaryPath</key>
<string>libhexa_tune_proto_ffi.a</string>
<key>HeadersPath</key>
<string>Headers</string>
<key>LibraryIdentifier</key>
<string>ios-arm64-simulator</string>
<key>LibraryPath</key>
<string>libhexa_tune_proto_ffi.a</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>libhexa_tune_proto_ffi.a</string>
<key>HeadersPath</key>
<string>Headers</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>libhexa_tune_proto_ffi.a</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>
<key>XCFrameworkFormatVersion</key>
<string>1.0</string>
</dict>
</plist>
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
/* Generated by cbindgen — do not edit manually */

#ifndef HEXA_TUNE_PROTO_H
#define HEXA_TUNE_PROTO_H

#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>

/**
* A byte slice descriptor for FFI (pointer + length).
*/
typedef struct HtpSlice {
/**
* Pointer to the data.
*/
const uint8_t *ptr;
/**
* Length of the data.
*/
uintptr_t len;
} HtpSlice;

/**
* Parse result returned by `htp_at_parse`.
*/
typedef struct HtpAtParseResult {
/**
* Parsed command ID.
*/
uint32_t id;
/**
* Operation type: 0=Set, 1=Query, 2=Response.
*/
int32_t op;
/**
* Offset of command name within the input buffer.
*/
uintptr_t name_offset;
/**
* Length of command name.
*/
uintptr_t name_len;
/**
* Number of parameters (max 8).
*/
uintptr_t param_count;
/**
* Offsets of each parameter within the input buffer.
*/
uintptr_t param_offsets[8];
/**
* Lengths of each parameter.
*/
uintptr_t param_lens[8];
} HtpAtParseResult;

/**
* Encodes an AT command string into the output buffer.
*
* # Safety
* All pointers must be valid for their respective lengths.
*/
int32_t htp_at_encode(const uint8_t *name_ptr,
uintptr_t name_len,
uint32_t id,
int32_t op,
const struct HtpSlice *params_ptr,
uintptr_t params_count,
uint8_t *out_ptr,
uintptr_t out_cap,
uintptr_t *out_len);

/**
* Parses an AT command from a byte buffer.
*
* On success, populates the `HtpAtParseResult` struct with offsets into the input buffer.
*
* # Safety
* All pointers must be valid.
*/
int32_t htp_at_parse(const uint8_t *input_ptr,
uintptr_t input_len,
struct HtpAtParseResult *result);

/**
* Frames payload bytes into a SysEx message.
*
* # Safety
* All pointers must be valid for their respective lengths.
*/
int32_t htp_sysex_frame(const uint8_t *payload_ptr,
uintptr_t payload_len,
uint8_t *out_ptr,
uintptr_t out_cap,
uintptr_t *out_len);

/**
* Extracts payload from a SysEx message.
*
* # Safety
* All pointers must be valid.
*/
int32_t htp_sysex_unframe(const uint8_t *data_ptr,
uintptr_t data_len,
uintptr_t *out_offset,
uintptr_t *out_len);

/**
* Converts SysEx bytes to USB MIDI 4-byte packets.
*
* # Safety
* All pointers must be valid for their respective lengths.
*/
int32_t htp_usb_packetize(const uint8_t *sysex_ptr,
uintptr_t sysex_len,
uint8_t (*out_ptr)[4],
uintptr_t out_cap,
uintptr_t *out_count);

/**
* Reassembles SysEx bytes from USB MIDI 4-byte packets.
*
* # Safety
* All pointers must be valid for their respective lengths.
*/
int32_t htp_usb_depacketize(const uint8_t (*packets_ptr)[4],
uintptr_t packet_count,
uint8_t *out_ptr,
uintptr_t out_cap,
uintptr_t *out_len);

/**
* Full pipeline: encode AT command → SysEx → USB MIDI packets.
*
* # Safety
* All pointers must be valid for their respective lengths.
*/
int32_t htp_encode_to_packets(const uint8_t *name_ptr,
uintptr_t name_len,
uint32_t id,
int32_t op,
const struct HtpSlice *params_ptr,
uintptr_t params_count,
uint8_t *at_buf_ptr,
uintptr_t at_buf_cap,
uint8_t *sysex_buf_ptr,
uintptr_t sysex_buf_cap,
uint8_t (*packets_out_ptr)[4],
uintptr_t packets_out_cap,
uintptr_t *packets_out_count);

#endif /* HEXA_TUNE_PROTO_H */
Binary file not shown.
Loading
Loading