frame some actual JNI out

This commit is contained in:
Matthew Kennedy 2023-11-03 16:17:02 -07:00 committed by rusefillc
parent 72ff326a32
commit 39297f3a7b
2 changed files with 23 additions and 22 deletions

View File

@ -4,16 +4,17 @@ project(OpenBLTJni)
set(CMAKE_BUILD_TYPE "Debug") set(CMAKE_BUILD_TYPE "Debug")
find_package(Java COMPONENTS Development)
set(JAVA_AWT_INCLUDE_PATH NotNeeded)
find_package(JNI REQUIRED)
# Set OpenBLT library related directory locations # Set OpenBLT library related directory locations
set(LIBOPENBLT_LIB ${PROJECT_SOURCE_DIR}/../../firmware/ext/openblt/Host/) set(LIBOPENBLT_LIB ${PROJECT_SOURCE_DIR}/../../firmware/ext/openblt/Host/)
set(LIBOPENBLT_INC ${LIBOPENBLT_LIB}/Source/LibOpenBLT) set(LIBOPENBLT_INC ${LIBOPENBLT_LIB}/Source/LibOpenBLT)
include_directories("${LIBOPENBLT_INC}")
link_directories("${LIBOPENBLT_LIB}")
add_library(openblt_jni SHARED) add_library(openblt_jni SHARED)
target_include_directories(openblt_jni PRIVATE ${LIBOPENBLT_INC})
target_include_directories(openblt_jni PRIVATE ${JNI_INCLUDE_DIRS})
target_link_libraries(openblt_jni ${LIBOPENBLT_LIBNAME})
target_sources(openblt_jni PRIVATE openblt_jni.cpp) target_sources(openblt_jni PRIVATE openblt_jni.cpp)

View File

@ -1,12 +1,15 @@
#include <jni.h>
// OpenBLT host library // OpenBLT host library
#include "openblt.h" #include "openblt.h"
#include <cstring> #include <cstring>
extern "C" void loadFirmware(const char* filename) JNIEXPORT void JNICALL com_rusefi_maintenance_OpenbltJni_loadFirmware(JNIEnv* env, jobject, jstring jFilename) {
{ const char* filename = env->GetStringUTFChars(jFilename, 0);
BltFirmwareInit(BLT_FIRMWARE_PARSER_SRECORD); BltFirmwareInit(BLT_FIRMWARE_PARSER_SRECORD);
if (BltFirmwareLoadFromFile(filename, 0) != BLT_RESULT_OK) { if (BltFirmwareLoadFromFile(filename, 0) != BLT_RESULT_OK) {
@ -17,13 +20,15 @@ extern "C" void loadFirmware(const char* filename)
if (BltFirmwareGetSegmentCount() == 0) { if (BltFirmwareGetSegmentCount() == 0) {
// todo: error handling // todo: error handling
} }
env->ReleaseStringUTFChars(jFilename, filename);
} }
tBltSessionSettingsXcpV10 xcpSettings; static tBltSessionSettingsXcpV10 xcpSettings;
tBltTransportSettingsXcpV10Rs232 transportSettings; static tBltTransportSettingsXcpV10Rs232 transportSettings;
char s_portName[256]; static char s_portName[256];
extern "C" void sessionStart(const char* portName) { JNIEXPORT void JNICALL com_rusefi_maintenance_OpenbltJni_sessionStart(JNIEnv* env, jobject, jstring jSerialPort) {
xcpSettings.timeoutT1 = 1000; xcpSettings.timeoutT1 = 1000;
xcpSettings.timeoutT3 = 2000; xcpSettings.timeoutT3 = 2000;
xcpSettings.timeoutT4 = 10000; xcpSettings.timeoutT4 = 10000;
@ -33,7 +38,10 @@ extern "C" void sessionStart(const char* portName) {
xcpSettings.seedKeyFile = nullptr; xcpSettings.seedKeyFile = nullptr;
xcpSettings.connectMode = 0; xcpSettings.connectMode = 0;
const char* portName = env->GetStringUTFChars(jSerialPort, 0);
strncpy(s_portName, portName, sizeof(s_portName)); strncpy(s_portName, portName, sizeof(s_portName));
env->ReleaseStringUTFChars(jSerialPort, portName);
transportSettings.portName = s_portName; transportSettings.portName = s_portName;
transportSettings.baudrate = 115200; transportSettings.baudrate = 115200;
@ -44,7 +52,7 @@ extern "C" void sessionStart(const char* portName) {
} }
} }
extern "C" void erase() { JNIEXPORT void JNICALL com_rusefi_maintenance_OpenbltJni_erase(JNIEnv*, jobject) {
int result = 0; int result = 0;
uint32_t segmentIdx; uint32_t segmentIdx;
@ -106,7 +114,7 @@ extern "C" void erase() {
} }
} }
extern "C" void program() { JNIEXPORT void JNICALL com_rusefi_maintenance_OpenbltJni_program(JNIEnv*, jobject) {
uint32_t segmentIdx; uint32_t segmentIdx;
uint32_t segmentLen; uint32_t segmentLen;
uint32_t segmentBase; uint32_t segmentBase;
@ -166,16 +174,8 @@ extern "C" void program() {
} }
} }
extern "C" void stop() { JNIEXPORT void JNICALL com_rusefi_maintenance_OpenbltJni_stop(JNIEnv*, jobject) {
BltSessionStop(); BltSessionStop();
BltSessionTerminate(); BltSessionTerminate();
BltFirmwareTerminate(); BltFirmwareTerminate();
} }
int main() {
loadFirmware("fome_update.srec");
sessionStart("COM8");
erase();
program();
stop();
}