mirror of https://github.com/rusefi/rusefi.git
frame some actual JNI out
This commit is contained in:
parent
72ff326a32
commit
39297f3a7b
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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();
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue