From 713f22ddcc8753513d75b7b70be6d3becaa29769 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=BDiga=20Kralj?= Date: Thu, 14 Jan 2021 00:50:23 +0100 Subject: [PATCH 01/17] Improved SL translation --- Translation Editor/translation_sl.json | 146 ++++++++++++------------- setup.sh | 2 +- 2 files changed, 74 insertions(+), 74 deletions(-) diff --git a/Translation Editor/translation_sl.json b/Translation Editor/translation_sl.json index 9658a6f4..2f7c6a90 100644 --- a/Translation Editor/translation_sl.json +++ b/Translation Editor/translation_sl.json @@ -1,34 +1,34 @@ { "languageCode": "SL", - "languageLocalName": "Slovensko", + "languageLocalName": "Slovenščina", "cyrillicGlyphs": false, "messages": { "SettingsCalibrationDone": "Kalibracija opravljena!", - "SettingsCalibrationWarning": "Preden nadaljujete, mora biti konica na sobni temperaturi!", - "SettingsResetWarning": "Ste prepričani, da želite ponastaviti nastavitve na privzete vrednosti?", + "SettingsCalibrationWarning": "Pred nadaljevanjem mora biti konica segreta na sobno temperaturo!", + "SettingsResetWarning": "Res želite ponastaviti na privzete nastavitve?", "UVLOWarningString": "NIZKA U", "UndervoltageString": "Nizka napetost", "InputVoltageString": "Vhodna U: ", "WarningTipTempString": "Temp. kon.: ", - "BadTipString": "OKVARA K", + "BadTipString": "KONICA?", "SleepingSimpleString": "Zzzz", "SleepingAdvancedString": "Spim...", - "WarningSimpleString": "HOT!", - "WarningAdvancedString": "!!!VROČA KON.!!!", - "SleepingTipAdvancedString": "Knica:", + "WarningSimpleString": "VROČ", + "WarningAdvancedString": "!!VROČA KONICA!!", + "SleepingTipAdvancedString": "Konica", "IdleTipString": "Kon:", - "IdleSetString": " nst.:", - "TipDisconnectedString": "KONICA ODSTRANJ.", + "IdleSetString": " temp:", + "TipDisconnectedString": "NI KONICE", "SolderingAdvancedPowerPrompt": "Moč: ", - "OffString": "Izk", + "OffString": "Off", "ResetOKMessage": "Reset OK", - "YourGainMessage": "Ojačan.:", - "SettingsResetMessage": "Settings were\nreset!", - "NoAccelerometerMessage": "No accelerometer\ndetected!", - "NoPowerDeliveryMessage": "No USB-PD IC\ndetected!", - "LockingKeysString": " LOCKED", - "UnlockingKeysString": "UNLOCKED", - "WarningKeysLockedString": "!LOCKED!" + "YourGainMessage": "Ojačenje", + "SettingsResetMessage": "Nastavitve OK!", + "NoAccelerometerMessage": "Ni pospeševalnik", + "NoPowerDeliveryMessage": "Ni USB-PD čipa!", + "LockingKeysString": "ZAKLENJ.", + "UnlockingKeysString": "ODKLENJ.", + "WarningKeysLockedString": "ZAKLENJ." }, "characters": { "SettingRightChar": "D", @@ -36,17 +36,17 @@ "SettingAutoChar": "S", "SettingFastChar": "H", "SettingSlowChar": "P", - "SettingStartSolderingChar": "T", - "SettingStartSleepChar": "S", - "SettingStartSleepOffChar": "O", - "SettingStartNoneChar": "F", - "SettingSensitivityOff": "O", - "SettingSensitivityLow": "L", - "SettingSensitivityMedium": "M", - "SettingSensitivityHigh": "H", - "SettingLockDisableChar": "D", - "SettingLockBoostChar": "B", - "SettingLockFullChar": "F" + "SettingStartSolderingChar": "S", + "SettingStartSleepChar": "Z", + "SettingStartSleepOffChar": "V", + "SettingStartNoneChar": "U", + "SettingSensitivityOff": "U", + "SettingSensitivityLow": "N", + "SettingSensitivityMedium": "S", + "SettingSensitivityHigh": "V", + "SettingLockDisableChar": "O", + "SettingLockBoostChar": "L", + "SettingLockFullChar": "P" }, "menuGroups": { "SolderingMenu": { @@ -58,7 +58,7 @@ }, "PowerSavingMenu": { "text2": [ - "Načini", + "Način", "spanja" ], "desc": "Nastavitve varčevanja z energijo" @@ -91,70 +91,70 @@ "Temp. med", "spanjem" ], - "desc": "Temperatura med spanjem " + "desc": "Temperatura med spanjem" }, "SleepTimeout": { "text2": [ "Čas do", "spanja" ], - "desc": "Čas pred spanjem " + "desc": "Čas pred spanjem " }, "ShutdownTimeout": { "text2": [ "Čas do", "izklopa" ], - "desc": "Čas pred izklopom " + "desc": "Čas do izklopa " }, "MotionSensitivity": { "text2": [ "Občutljivost", "premikanja" ], - "desc": "Občutljivost premikanja <0.izklopljeno 1.najmanj 9.najbolj občutljivo>" + "desc": "0=izklopljeno | 1=najmanjša | ... | 9=največja" }, "TemperatureUnit": { "text2": [ "Enota za", "temperaturo" ], - "desc": "Enota za temperaturo " + "desc": "Enota za temperaturo " }, "AdvancedIdle": { "text2": [ - "Več info na", - "zaslonu v mir" + "Več info. na", + "mir. zaslonu" ], - "desc": "Prikaže več informacij z manjšo pisavo na zaslonu med mirovanjem." + "desc": "Prikaži več informacij z manjšo pisavo na mirovalnem zaslonu." }, "DisplayRotation": { "text2": [ "Orientacija", "zaslona" ], - "desc": "Orientacija zaslona " + "desc": "S=samodejno | L=levičar | D=desničar" }, "BoostTemperature": { "text2": [ - "Temperat.", - "v boost" + "Pospešena", + "temp." ], - "desc": "Temperatura v \"boost\" načinu" + "desc": "Temperatura v pospešenem načinu" }, "AutoStart": { "text2": [ "Samodejni", "zagon" ], - "desc": "Samodejno segrej konico ob vklopu. T=segrej, S=spanje, F=izklop" + "desc": "Samodejno gretje konice ob vklopu " }, "CooldownBlink": { "text2": [ "Utripanje med", "hlajenjem" ], - "desc": "Utripaj temperaturo med hlajenjem, ko je konica še vroča." + "desc": "Ko je konica še vroča, utripaj prikaz temperature med hlajenjem." }, "TemperatureCalibration": { "text2": [ @@ -175,7 +175,7 @@ "Kalibriram", "vhodno napetost?" ], - "desc": "Kalibracija VIN. Nastavitve z gumbi, dolgi pritisk za izhod." + "desc": "Kalibracija VIN " }, "AdvancedSoldering": { "text2": [ @@ -189,11 +189,11 @@ "Hitrost", "besedila" ], - "desc": "Hitrost, s katero se prikazuje besedilo" + "desc": "Hitrost, s katero se prikazuje besedilo " }, "TipModel": { "text2": [ - "Model", + "Tip", "konice" ], "desc": "Izbira tipa konice" @@ -214,66 +214,66 @@ }, "QCMaxVoltage": { "text2": [ - "Moč napajalnega", - "vira" + "QC", + "napetost" ], - "desc": "Moč v W napajalnega vira" + "desc": "Moč napajalnega vira v vatih [W]" }, "PowerLimit": { "text2": [ - "Power", - "Limit" + "Meja", + "moči" ], - "desc": "Maximum power the iron can use " + "desc": "Največja dovoljena moč v vatih [W]" }, "ReverseButtonTempChange": { "text2": [ - "Key +-", - "reverse?" + "Obrni", + "tipki + -?" ], - "desc": "Reverse the tip temperature change buttons plus minus assignment." + "desc": "Zamenjaj funkciji gumbov." }, "TempChangeShortStep": { "text2": [ - "Temp change", - "short?" + "Kratka sprememba", + "temperature?" ], - "desc": "Temperature change steps on short button press!" + "desc": "Temperatura se spremeni ob kratkem pritisku na gumb." }, "TempChangeLongStep": { "text2": [ - "Temp change", - "long?" + "Dolga sprememba", + "temperature?" ], - "desc": "Temperature change steps on long button press!" + "desc": "Temperatura se spremeni ob dolgem pritisku na gumb." }, "PowerPulsePower": { "text2": [ - "Power", - "Pulse W" + "Pulz", + "moči" ], - "desc": "Keep awake pulse power intensity" + "desc": "Velikost moči za vzdrževanje budnosti." }, "TipGain": { "text2": [ - "Modify", - "tip gain" + "Nastavi", + "moč kon." ], - "desc": "Tip gain" + "desc": "Nastavi moč konice." }, "HallEffSensitivity": { "text2": [ - "Hall Eff", - "Sensitivity" + "Občut.", + "Hall son" ], - "desc": "Sensitivity of the Hall effect sensor in detecting sleep " + "desc": "Občutljivost Hallove sonde za zaznavanje spanja " }, "LockingMode": { "text2": [ - "Allow buttons", - "locking" + "Omogoči", + "zaklep gumbov" ], - "desc": "When soldering, long press on both buttons lock them " + "desc": "Za zaklep med spajkanjem drži oba gumba " } } } \ No newline at end of file diff --git a/setup.sh b/setup.sh index 6a235855..1725302d 100644 --- a/setup.sh +++ b/setup.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e # Setup shell file to setup the environment on an ubuntu machine -sudo apt-get update && sudo apt-get install -y make bzip2 git python3 wget +#sudo apt-get update && sudo apt-get install -y make bzip2 git python3 wget sudo mkdir -p /build cd /build From b2cf536f6910cbea92d99fd04b13e51375510d0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=BDiga=20Kralj?= Date: Thu, 14 Jan 2021 00:59:42 +0100 Subject: [PATCH 02/17] Uncommented apt install in setup.sh --- setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.sh b/setup.sh index 1725302d..6a235855 100644 --- a/setup.sh +++ b/setup.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e # Setup shell file to setup the environment on an ubuntu machine -#sudo apt-get update && sudo apt-get install -y make bzip2 git python3 wget +sudo apt-get update && sudo apt-get install -y make bzip2 git python3 wget sudo mkdir -p /build cd /build From fb9418ebbd7c96e60ea2ab12630b172e421837bc Mon Sep 17 00:00:00 2001 From: canislupus11 Date: Thu, 14 Jan 2021 10:53:24 +0100 Subject: [PATCH 03/17] Better PowerPulsePower translation --- Translation Editor/translation_pl.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Translation Editor/translation_pl.json b/Translation Editor/translation_pl.json index 320574d4..1a92b0f9 100644 --- a/Translation Editor/translation_pl.json +++ b/Translation Editor/translation_pl.json @@ -253,7 +253,7 @@ "Moc", "impulsu" ], - "desc": "Utrzymuj moc impulsu na wybranym poziomie " + "desc": "W przypadku używania powerbanku, utrzymuj moc na poziomie aby nie uśpić powerbanku" }, "TipGain": { "text2": [ @@ -277,4 +277,4 @@ "desc": "W trybie lutowania, wciśnij oba przyciski aby je zablokować " } } -} \ No newline at end of file +} From ee0385e380984bf1141a31061ba3c9802b9817e2 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Fri, 15 Jan 2021 21:26:39 +1100 Subject: [PATCH 04/17] Check chip ID on the BMA --- workspace/TS100/Core/Drivers/BMA223.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/workspace/TS100/Core/Drivers/BMA223.cpp b/workspace/TS100/Core/Drivers/BMA223.cpp index ac049b07..4da4ae76 100755 --- a/workspace/TS100/Core/Drivers/BMA223.cpp +++ b/workspace/TS100/Core/Drivers/BMA223.cpp @@ -9,7 +9,15 @@ #include bool BMA223::detect() { - return FRToSI2C::probe(BMA223_ADDRESS); + if (FRToSI2C::probe(BMA223_ADDRESS)) { + //Read chip id to ensure its not an address collision + uint8_t id = 0; + if (FRToSI2C::Mem_Read(BMA223_ADDRESS, BMA223_BGW_CHIPID, &id, 1)) { + return id == 0b11111000; + } + } + + return false; } static const FRToSI2C::I2C_REG i2c_registers[] = { // From 7ba2bda27590c8e74fe56fa2db403887fcd54c9a Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Fri, 15 Jan 2021 22:02:07 +1100 Subject: [PATCH 05/17] Ballpark some SC7A20 code Using some guesses from the LIS datasheet --- workspace/TS100/Core/Drivers/SC7A20.cpp | 69 +++++++++++++++++++ workspace/TS100/Core/Drivers/SC7A20.hpp | 27 ++++++++ workspace/TS100/Core/Drivers/SC7A20_defines.h | 46 +++++++++++++ 3 files changed, 142 insertions(+) create mode 100644 workspace/TS100/Core/Drivers/SC7A20.cpp create mode 100644 workspace/TS100/Core/Drivers/SC7A20.hpp create mode 100644 workspace/TS100/Core/Drivers/SC7A20_defines.h diff --git a/workspace/TS100/Core/Drivers/SC7A20.cpp b/workspace/TS100/Core/Drivers/SC7A20.cpp new file mode 100644 index 00000000..7bebb29d --- /dev/null +++ b/workspace/TS100/Core/Drivers/SC7A20.cpp @@ -0,0 +1,69 @@ +/* + * SC7A20.cpp + * + * Created on: 18 Sep. 2020 + * Author: Ralim + */ + +#include +#include +#include + +bool SC7A20::detect() { + if (FRToSI2C::probe(SC7A20_ADDRESS)) { + //Read chip id to ensure its not an address collision + uint8_t id = 0; + if (FRToSI2C::Mem_Read(SC7A20_ADDRESS, SC7A20_WHO_AMI_I, &id, 1)) { + return id == 0b00010001; + } + } + + return false; +} + +static const FRToSI2C::I2C_REG i2c_registers[] = { // + // + { SC7A20_CTRL_REG1, 0b01100111, 0 }, //200Hz, XYZ enabled + { SC7A20_CTRL_REG2, 0b00000000, 0 }, //Setup filter to 0x00 ?? + { SC7A20_CTRL_REG3, 0b00000000, 0 }, //int1 off + { SC7A20_CTRL_REG4, 0b01001000, 0 }, //Block mode off,little-endian,2G,High-pres,self test off + { SC7A20_CTRL_REG5, 0b00000100, 0 }, //fifo off, D4D on int1 + { SC7A20_CTRL_REG6, 0x00, 0 }, //INT2 off + //Basically setup the unit to run, and enable 4D orientation detection + { SC7A20_INT2_CFG, 0b01111110, 0 }, //setup for movement detection + { SC7A20_INT2_THS, 0x28, 0 }, // + { SC7A20_INT2_DURATION, 64, 0 }, // + { SC7A20_INT1_CFG, 0b01111110, 0 }, // + { SC7A20_INT1_THS, 0x28, 0 }, // + { SC7A20_INT1_DURATION, 64, 0 } + + // + }; +bool SC7A20::initalize() { + //Setup acceleration readings + //2G range + //bandwidth = 250Hz + //High pass filter on (Slow compensation) + //Turn off IRQ output pins + //Orientation recognition in symmetrical mode + // Hysteresis is set to ~ 16 counts + //Theta blocking is set to 0b10 + + return FRToSI2C::writeRegistersBulk(SC7A20_ADDRESS, i2c_registers, sizeof(i2c_registers) / sizeof(i2c_registers[0])); + +} + +void SC7A20::getAxisReadings(int16_t &x, int16_t &y, int16_t &z) { + //We can tell the accelerometer to output in LE mode which makes this simple + uint16_t sensorData[3] = { 0, 0, 0 }; + + if (FRToSI2C::Mem_Read(SC7A20_ADDRESS, SC7A20_OUT_X_L, (uint8_t*) sensorData, 6) == false) { + x = y = z = 0; + return; + } + //Shift 6 to make its range ~= the other accelerometers + x = sensorData[0]; + y = sensorData[1]; + z = sensorData[2]; + +} diff --git a/workspace/TS100/Core/Drivers/SC7A20.hpp b/workspace/TS100/Core/Drivers/SC7A20.hpp new file mode 100644 index 00000000..213c1898 --- /dev/null +++ b/workspace/TS100/Core/Drivers/SC7A20.hpp @@ -0,0 +1,27 @@ +/* + * BMA223.hpp + * + * Created on: 18 Sep. 2020 + * Author: Ralim + */ + +#ifndef CORE_DRIVERS_BMA223_HPP_ +#define CORE_DRIVERS_BMA223_HPP_ +#include "I2C_Wrapper.hpp" +#include "BSP.h" +#include "SC7A20_defines.h" + +class SC7A20 { +public: + static bool detect(); + static bool initalize(); + //1 = rh, 2,=lh, 8=flat + static Orientation getOrientation() { + return static_cast((FRToSI2C::I2C_RegisterRead(SC7A20_ADDRESS,SC7A20_INT2_SOURCE) >> 2) - 1); + } + static void getAxisReadings(int16_t& x, int16_t& y, int16_t& z); + +private: +}; + +#endif /* CORE_DRIVERS_BMA223_HPP_ */ diff --git a/workspace/TS100/Core/Drivers/SC7A20_defines.h b/workspace/TS100/Core/Drivers/SC7A20_defines.h new file mode 100644 index 00000000..1b74063e --- /dev/null +++ b/workspace/TS100/Core/Drivers/SC7A20_defines.h @@ -0,0 +1,46 @@ +/* + * BMA223_defines.h + * + * Created on: 18 Sep. 2020 + * Author: Ralim + */ + +#ifndef CORE_DRIVERS_SC7A20_DEFINES_H_ +#define CORE_DRIVERS_SC7A20_DEFINES_H_ + +#define SC7A20_ADDRESS 0x18<<1 +#define SC7A20_WHO_AMI_I 0x0F +#define SC7A20_CTRL_REG1 0x20 +#define SC7A20_CTRL_REG2 0x21 +#define SC7A20_CTRL_REG3 0x22 +#define SC7A20_CTRL_REG4 0x23 +#define SC7A20_CTRL_REG5 0x24 +#define SC7A20_CTRL_REG6 0x25 +#define SC7A20_REFERENCE 0x26 +#define SC7A20_STATUS_REG 0x27 +#define SC7A20_OUT_X_L 0x28 +#define SC7A20_OUT_X_H 0x29 +#define SC7A20_OUT_Y_L 0x2A +#define SC7A20_OUT_Y_H 0x2B +#define SC7A20_OUT_Z_L 0x2C +#define SC7A20_OUT_Z_H 0x2D +#define SC7A20_FIFO_CTRL 0x2E +#define SC7A20_FIFO_SRC 0x2F +#define SC7A20_INT1_CFG 0x30 +#define SC7A20_INT1_SOURCE 0x31 +#define SC7A20_INT1_THS 0x32 +#define SC7A20_INT1_DURATION 0x33 +#define SC7A20_INT2_CFG 0x34 +#define SC7A20_INT2_SOURCE 0x35 +#define SC7A20_INT2_THS 0x36 +#define SC7A20_INT2_DURATION 0x37 +#define SC7A20_CLICK_CFG 0x38 +#define SC7A20_CLICK_SRC 0x39 +#define SC7A20_CLICK_THS 0x3A +#define SC7A20_TIME_LIMIT 0x3B +#define SC7A20_TIME_LATENCY 0x3C +#define SC7A20_TIME_WINDOW 0x3D +#define SC7A20_ACT_THS 0x3E +#define SC7A20_ACT_DURATION 0x3F + +#endif /* CORE_DRIVERS_BMA223_DEFINES_H_ */ From df2f97a1deb4fa17f4ce9bdad67c4d1da7e2b1b3 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Fri, 15 Jan 2021 22:07:26 +1100 Subject: [PATCH 06/17] Link into MOV thread --- workspace/TS100/Core/BSP/Pine64/Model_Config.h | 1 + workspace/TS100/Core/Threads/MOVThread.cpp | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/workspace/TS100/Core/BSP/Pine64/Model_Config.h b/workspace/TS100/Core/BSP/Pine64/Model_Config.h index 13846fc5..0c8577cf 100755 --- a/workspace/TS100/Core/BSP/Pine64/Model_Config.h +++ b/workspace/TS100/Core/BSP/Pine64/Model_Config.h @@ -23,6 +23,7 @@ #define ENABLE_QC2 #define TEMP_TMP36 #define ACCEL_BMA +#define ACCEL_SC7 #define HALL_SENSOR #define HALL_SI7210 #define BATTFILTERDEPTH 32 diff --git a/workspace/TS100/Core/Threads/MOVThread.cpp b/workspace/TS100/Core/Threads/MOVThread.cpp index d35ebd89..90205a78 100644 --- a/workspace/TS100/Core/Threads/MOVThread.cpp +++ b/workspace/TS100/Core/Threads/MOVThread.cpp @@ -21,6 +21,7 @@ #include "power.hpp" #include "stdlib.h" #include "task.h" +#include "SC7A20.hpp" #define MOVFilter 8 uint8_t accelInit = 0; TickType_t lastMovementTime = 0; @@ -56,6 +57,14 @@ void detectAccelerometerVersion() { DetectedAccelerometerVersion = 4; } } else +#endif +#ifdef ACCEL_SC7 + if (SC7A20::detect()) { + // Setup the SC7A20 Accelerometer + if (SC7A20::initalize()) { + DetectedAccelerometerVersion = 5; + } + } else #endif { // disable imu sensitivity @@ -86,6 +95,12 @@ inline void readAccelerometer(int16_t &tx, int16_t &ty, int16_t &tz, Orientation MSA301::getAxisReadings(tx, ty, tz); rotation = MSA301::getOrientation(); } else +#endif +#ifdef ACCEL_SC7 + if (DetectedAccelerometerVersion == 5) { + SC7A20::getAxisReadings(tx, ty, tz); + rotation = SC7A20::getOrientation(); + } else #endif { // do nothing :( From beef76666acea0e156c967686cea99cb3c57ddd7 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Fri, 15 Jan 2021 22:11:21 +1100 Subject: [PATCH 07/17] Typo --- workspace/TS100/Core/Drivers/SC7A20.hpp | 4 ++-- workspace/TS100/Core/Threads/MOVThread.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/workspace/TS100/Core/Drivers/SC7A20.hpp b/workspace/TS100/Core/Drivers/SC7A20.hpp index 213c1898..501b7260 100644 --- a/workspace/TS100/Core/Drivers/SC7A20.hpp +++ b/workspace/TS100/Core/Drivers/SC7A20.hpp @@ -5,8 +5,8 @@ * Author: Ralim */ -#ifndef CORE_DRIVERS_BMA223_HPP_ -#define CORE_DRIVERS_BMA223_HPP_ +#ifndef CORE_DRIVERS_SC7A20_HPP_ +#define CORE_DRIVERS_SC7A20_HPP_ #include "I2C_Wrapper.hpp" #include "BSP.h" #include "SC7A20_defines.h" diff --git a/workspace/TS100/Core/Threads/MOVThread.cpp b/workspace/TS100/Core/Threads/MOVThread.cpp index 90205a78..c26e4294 100644 --- a/workspace/TS100/Core/Threads/MOVThread.cpp +++ b/workspace/TS100/Core/Threads/MOVThread.cpp @@ -6,6 +6,7 @@ */ #include "BMA223.hpp" +#include "SC7A20.hpp" #include "BSP.h" #include "FreeRTOS.h" #include "I2C_Wrapper.hpp" @@ -21,7 +22,6 @@ #include "power.hpp" #include "stdlib.h" #include "task.h" -#include "SC7A20.hpp" #define MOVFilter 8 uint8_t accelInit = 0; TickType_t lastMovementTime = 0; From b46d19b5f462787342f466774983f45c24b99814 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Fri, 15 Jan 2021 22:20:24 +1100 Subject: [PATCH 08/17] Flip orientation --- workspace/TS100/Core/Drivers/SC7A20.hpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/workspace/TS100/Core/Drivers/SC7A20.hpp b/workspace/TS100/Core/Drivers/SC7A20.hpp index 501b7260..a9d5ab80 100644 --- a/workspace/TS100/Core/Drivers/SC7A20.hpp +++ b/workspace/TS100/Core/Drivers/SC7A20.hpp @@ -17,9 +17,18 @@ public: static bool initalize(); //1 = rh, 2,=lh, 8=flat static Orientation getOrientation() { - return static_cast((FRToSI2C::I2C_RegisterRead(SC7A20_ADDRESS,SC7A20_INT2_SOURCE) >> 2) - 1); + uint8_t val = ((FRToSI2C::I2C_RegisterRead(SC7A20_ADDRESS, SC7A20_INT2_SOURCE) >> 2) - 1); + if (val == 8) + val = 3; + else if (val == 1) + val = 1; + else if (val == 2) + val = 0; + else + val = 3; + return static_cast(val); } - static void getAxisReadings(int16_t& x, int16_t& y, int16_t& z); + static void getAxisReadings(int16_t &x, int16_t &y, int16_t &z); private: }; From 7e9ab6ae8694e506dffe944df1338d14eb5ae7e1 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Fri, 15 Jan 2021 22:27:11 +1100 Subject: [PATCH 09/17] Flip the other way --- workspace/TS100/Core/Drivers/SC7A20.hpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/workspace/TS100/Core/Drivers/SC7A20.hpp b/workspace/TS100/Core/Drivers/SC7A20.hpp index a9d5ab80..757c4f5f 100644 --- a/workspace/TS100/Core/Drivers/SC7A20.hpp +++ b/workspace/TS100/Core/Drivers/SC7A20.hpp @@ -18,12 +18,10 @@ public: //1 = rh, 2,=lh, 8=flat static Orientation getOrientation() { uint8_t val = ((FRToSI2C::I2C_RegisterRead(SC7A20_ADDRESS, SC7A20_INT2_SOURCE) >> 2) - 1); - if (val == 8) - val = 3; - else if (val == 1) - val = 1; - else if (val == 2) + if (val == 1) val = 0; + else if (val == 0) + val = 1; else val = 3; return static_cast(val); From 75a2d7008094acb20c9c76a2cad893acedf751ae Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Fri, 15 Jan 2021 22:45:53 +1100 Subject: [PATCH 10/17] Fix orientation --- workspace/TS100/Core/Drivers/SC7A20.hpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/workspace/TS100/Core/Drivers/SC7A20.hpp b/workspace/TS100/Core/Drivers/SC7A20.hpp index 757c4f5f..f58214da 100644 --- a/workspace/TS100/Core/Drivers/SC7A20.hpp +++ b/workspace/TS100/Core/Drivers/SC7A20.hpp @@ -19,12 +19,11 @@ public: static Orientation getOrientation() { uint8_t val = ((FRToSI2C::I2C_RegisterRead(SC7A20_ADDRESS, SC7A20_INT2_SOURCE) >> 2) - 1); if (val == 1) - val = 0; - else if (val == 0) - val = 1; + return Orientation::ORIENTATION_LEFT_HAND; + else if (val == 4 || val == 0) + return Orientation::ORIENTATION_RIGHT_HAND; else - val = 3; - return static_cast(val); + return Orientation::ORIENTATION_FLAT; } static void getAxisReadings(int16_t &x, int16_t &y, int16_t &z); From a438588ae6eaa80eb37022cdae1d9de2835f4d55 Mon Sep 17 00:00:00 2001 From: Hippi Viking <33314937+hippi-viking@users.noreply.github.com> Date: Fri, 15 Jan 2021 19:30:20 +0000 Subject: [PATCH 11/17] Update Hungarian translation Update and minor fix to the Hungarian translation. --- Translation Editor/translation_hu.json | 142 ++++++++++++------------- 1 file changed, 71 insertions(+), 71 deletions(-) diff --git a/Translation Editor/translation_hu.json b/Translation Editor/translation_hu.json index 5941d22f..03d549a3 100644 --- a/Translation Editor/translation_hu.json +++ b/Translation Editor/translation_hu.json @@ -4,31 +4,31 @@ "cyrillicGlyphs": false, "messages": { "SettingsCalibrationDone": "Kalibráció befejezve!", - "SettingsCalibrationWarning": "Folytatás előtt győződjön meg róla, hogy a hegy szobahőmérsékletű!", + "SettingsCalibrationWarning": "Folytatás előtt győződjön meg róla, hogy a páka szobahőmérsékletű!", "SettingsResetWarning": "Biztosan visszaállítja a beállításokat az alapértelmezett értékekre?", "UVLOWarningString": "DC KEVÉS", "UndervoltageString": "Alulfeszültség", "InputVoltageString": "Bemenet V: ", "WarningTipTempString": "Hegy hő: ", - "BadTipString": "HEGY HIB", + "BadTipString": "PÁKAHIBA", "SleepingSimpleString": "Zzzz", "SleepingAdvancedString": "Alvás...", - "WarningSimpleString": "FORR", - "WarningAdvancedString": "!! FORRÓ HEGY !!", - "SleepingTipAdvancedString": "Hegy:", - "IdleTipString": "Hegy:", - "IdleSetString": " Cél:", - "TipDisconnectedString": "HEGY LEVÉVE", + "WarningSimpleString": "FORRÓ!", + "WarningAdvancedString": "!! FORRÓ PÁKA !!", + "SleepingTipAdvancedString": "Páka:", + "IdleTipString": "Páka:", + "IdleSetString": "Cél:", + "TipDisconnectedString": "PÁKA LEVÉVE", "SolderingAdvancedPowerPrompt": "Telj: ", "OffString": "Ki", - "ResetOKMessage": "Reset OK", - "YourGainMessage": "Your gain:", - "SettingsResetMessage": "Settings were\nreset!", - "NoAccelerometerMessage": "No accelerometer\ndetected!", - "NoPowerDeliveryMessage": "No USB-PD IC\ndetected!", - "LockingKeysString": " LOCKED", - "UnlockingKeysString": "UNLOCKED", - "WarningKeysLockedString": "!LOCKED!" + "ResetOKMessage": "Törlés OK", + "YourGainMessage": "Erősítés:", + "SettingsResetMessage": "Beállítások\ntörölve!", + "NoAccelerometerMessage": "Nincs gyorsulásmérő!", + "NoPowerDeliveryMessage": "Nincs USB-PD IC!", + "LockingKeysString": "LEZÁRVA", + "UnlockingKeysString": "FELOLDVA", + "WarningKeysLockedString": "!LEZÁRVA!" }, "characters": { "SettingRightChar": "J", @@ -36,17 +36,17 @@ "SettingAutoChar": "A", "SettingFastChar": "G", "SettingSlowChar": "L", - "SettingStartSolderingChar": "T", - "SettingStartSleepChar": "S", - "SettingStartSleepOffChar": "O", - "SettingStartNoneChar": "F", - "SettingSensitivityOff": "O", - "SettingSensitivityLow": "L", - "SettingSensitivityMedium": "M", - "SettingSensitivityHigh": "H", - "SettingLockDisableChar": "D", + "SettingStartSolderingChar": "F", + "SettingStartSleepChar": "Z", + "SettingStartSleepOffChar": "S", + "SettingStartNoneChar": "K", + "SettingSensitivityOff": "0", + "SettingSensitivityLow": "A", + "SettingSensitivityMedium": "K", + "SettingSensitivityHigh": "M", + "SettingLockDisableChar": "K", "SettingLockBoostChar": "B", - "SettingLockFullChar": "F" + "SettingLockFullChar": "T" }, "menuGroups": { "SolderingMenu": { @@ -65,7 +65,7 @@ }, "UIMenu": { "text2": [ - "Felhasználó", + "Felhasználói", "felület" ], "desc": "Felhasználói felület beállításai" @@ -84,21 +84,21 @@ "Áram", "forrás" ], - "desc": "Áramforrás. Beállítja a lekapcsolási feszültséget. " + "desc": "Kikapcsolási feszültség beállítása (DC:10V, S:3.3V/LiPo cella)" }, "SleepTemperature": { "text2": [ "Alvási", - "hőfok" + "hőmérs." ], - "desc": "Alvási hőmérséklet " + "desc": "Hőmérséklet alvó módban " }, "SleepTimeout": { "text2": [ "Alvás", "időzítő" ], - "desc": "Alvás időzítő " + "desc": "Alvási időzítő " }, "ShutdownTimeout": { "text2": [ @@ -112,33 +112,33 @@ "Mozgás", "érzékenység" ], - "desc": "Mozgás érzékenység beállítása. <0.kikapcsolva 1.legkevésbé érzékeny 9.legérzékenyebb>" + "desc": "Mozgás érzékenység beállítása (0=kikapcsolva 1=legkevésbé érzékeny 9=legérzékenyebb)" }, "TemperatureUnit": { "text2": [ "Hőmérséklet", "mértékegysége" ], - "desc": "Hőmérséklet mértékegysége " + "desc": "Hőmérséklet mértékegysége (C=Celsius F=Fahrenheit)" }, "AdvancedIdle": { "text2": [ "Részletes", "készenlét" ], - "desc": "Részletes információ megjelenítése kisebb betűméretben a készenléti képernyőn." + "desc": "Részletes információk megjelenítése kisebb betűméretben a készenléti képernyőn" }, "DisplayRotation": { "text2": [ "Kijelző", "tájolása" ], - "desc": "Kijelző tájolása " + "desc": "Kijelző tájolása (A=automatikus B=balkezes J=jobbkezes)" }, "BoostTemperature": { "text2": [ "Boost", - "hőfok" + "hőmérs." ], "desc": "Hőmérséklet \"boost\" módban" }, @@ -147,21 +147,21 @@ "Automatikus", "indítás" ], - "desc": "Bekapcsolás után automatikusan lépjen forrasztás módba. T=forrasztás, S=alvó mód, F=ki" + "desc": "Bekapcsolás után automatikusan lépjen forrasztás módba (F=forrasztás S=szobahőmérséklet Z=alvó mód K=ki)" }, "CooldownBlink": { "text2": [ "Villogás", "hűléskor" ], - "desc": "Villogjon a hőmérséklet hűlés közben, amíg a hegy forró." + "desc": "Villogjon a hőmérséklet hűlés közben, amíg a páka forró" }, "TemperatureCalibration": { "text2": [ "Hőmérséklet", "kalibrálása?" ], - "desc": "Hegy hőmérséklet-különbségének kalibrálása." + "desc": "Páka hőmérséklet-érzékelőjének kalibrálása" }, "SettingsReset": { "text2": [ @@ -172,15 +172,15 @@ }, "VoltageCalibration": { "text2": [ - "Bemeneti fesz", + "Bemeneti fesz.", "kalibrálása?" ], - "desc": "Bemeneti feszültség kalibrálása. Röviden megnyomva módosítás, hosszan megnyomva kilépés" + "desc": "Bemeneti feszültség kalibrálása (röviden megnyomva módosítás, hosszan megnyomva kilépés)" }, "AdvancedSoldering": { "text2": [ "Részletes", - "forr. kép." + "forr.kép" ], "desc": "Részletes információk megjelenítése forrasztás közben" }, @@ -193,10 +193,10 @@ }, "TipModel": { "text2": [ - "Forrasztóhegy", + "Forr.páka", "modell" ], - "desc": "Forrasztóhegy modell kiválasztása" + "desc": "Forrasztópáka modell kiválasztása" }, "SimpleCalibrationMode": { "text2": [ @@ -214,66 +214,66 @@ }, "QCMaxVoltage": { "text2": [ - "Bemeneti", - "teljesítmény" + "Max. USB", + "fesz." ], - "desc": "A tápegység által leadott teljesítmény" + "desc": "Maximális USB feszültség (QuickCharge)" }, "PowerLimit": { "text2": [ - "Telj", + "Teljesítm.", "maximum" ], - "desc": "Maximális teljesitmény beállitása " + "desc": "Maximális felvett teljesitmény beállitása" }, "ReverseButtonTempChange": { "text2": [ - "GOMB +-", - "Felcseréled?" + "+/- gomb", + "fordítva" ], - "desc": "A páka hömérséklet növelés csökkentési gombok felcserélése." + "desc": "Páka hőmérséklet növelés/csökkentés gombok felcserélése" }, "TempChangeShortStep": { "text2": [ - "Hömérséklet", - "váltás rövid?" + "Hőm.váltás", + "rövid" ], - "desc": "Hömérséklet váltás rövid gombnyomásrs bekapcsolva!" + "desc": "Hőmérséklet váltás rövid gombnyomásra " }, "TempChangeLongStep": { "text2": [ - "Hömérséklet", - "váltás hosszú?" + "Hőm.váltás", + "hosszú" ], - "desc": "Hömérséklet váltás hosszú gombnyomásrs bekapcsolva!" + "desc": "Hőmérséklet váltás hosszú gombnyomásra " }, "PowerPulsePower": { "text2": [ - "Telj power", - "bank üzem W" + "Ébrentartó", + "pulzus W" ], - "desc": "Powerbank üzemnél nem engedi a powerbankot kikapcsolni idönkénti áram felvételt generál. " + "desc": "Powerbankot ébrentartó áramfelvételi pulzusok nagysága " }, "TipGain": { "text2": [ - "Modify", - "tip gain" + "Pákaerősítés", + "" ], - "desc": "Tip gain" + "desc": "Pákaerősítés állítása" }, "HallEffSensitivity": { "text2": [ - "Hall Eff", - "Sensitivity" + "Alvásérzékelő", + "érzékenység" ], - "desc": "Sensitivity of the Hall effect sensor in detecting sleep " + "desc": "Alvásérzékelő gyorsulásmérő érzékenysége (0=ki A=alacsony K=közepes M=magas)" }, "LockingMode": { "text2": [ - "Allow buttons", - "locking" + "Lezárás", + "enged." ], - "desc": "When soldering, long press on both buttons lock them " + "desc": "Forrasztás közben mindkét gombot hosszan lenyomva rögzíti a hőmérsékletet (K=ki B=csak \"boost\" mód T=teljes lezárás)" } } -} \ No newline at end of file +} From 25e4abee7df52bd35688f6f9d25f9a9140cba409 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 16 Jan 2021 09:20:23 +1100 Subject: [PATCH 12/17] Split power work into own thread Completely forseeable issue. Now that we have _more_ ram available, this is a good option to split power related items out into their own thread. --- .../TS100/Core/BSP/Miniware/fusb302b.cpp | 2 -- workspace/TS100/Core/Inc/main.hpp | 1 + workspace/TS100/Core/Src/main.cpp | 25 ++++++++++------- workspace/TS100/Core/Threads/MOVThread.cpp | 2 -- workspace/TS100/Core/Threads/POWThread.cpp | 27 +++++++++++++++++++ 5 files changed, 44 insertions(+), 13 deletions(-) create mode 100644 workspace/TS100/Core/Threads/POWThread.cpp diff --git a/workspace/TS100/Core/BSP/Miniware/fusb302b.cpp b/workspace/TS100/Core/BSP/Miniware/fusb302b.cpp index fda41003..ac5cbe76 100644 --- a/workspace/TS100/Core/BSP/Miniware/fusb302b.cpp +++ b/workspace/TS100/Core/BSP/Miniware/fusb302b.cpp @@ -244,8 +244,6 @@ void fusb_reset() { fusb_write_byte( FUSB_CONTROL0, 0x44); /* Flush the RX buffer */ fusb_write_byte( FUSB_CONTROL1, FUSB_CONTROL1_RX_FLUSH); - /* Reset the PD logic */ -// fusb_write_byte( FUSB_RESET, FUSB_RESET_PD_RESET); if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED) { I2CBB::unlock2(); } diff --git a/workspace/TS100/Core/Inc/main.hpp b/workspace/TS100/Core/Inc/main.hpp index ede22bd5..f3a4f49b 100755 --- a/workspace/TS100/Core/Inc/main.hpp +++ b/workspace/TS100/Core/Inc/main.hpp @@ -20,6 +20,7 @@ void vApplicationStackOverflowHook(TaskHandle_t *pxTask, void startGUITask(void const *argument); void startPIDTask(void const *argument); void startMOVTask(void const *argument); +void startPOWTask(void const *argument); extern TaskHandle_t pidTaskNotification; extern uint8_t accelInit; extern TickType_t lastMovementTime; diff --git a/workspace/TS100/Core/Src/main.cpp b/workspace/TS100/Core/Src/main.cpp index c638b0d8..14d27bb5 100755 --- a/workspace/TS100/Core/Src/main.cpp +++ b/workspace/TS100/Core/Src/main.cpp @@ -24,11 +24,17 @@ osThreadId PIDTaskHandle; static const size_t PIDTaskStackSize = 512 / 4; uint32_t PIDTaskBuffer[PIDTaskStackSize]; osStaticThreadDef_t PIDTaskControlBlock; + osThreadId MOVTaskHandle; static const size_t MOVTaskStackSize = 1024 / 4; uint32_t MOVTaskBuffer[MOVTaskStackSize]; osStaticThreadDef_t MOVTaskControlBlock; +osThreadId POWTaskHandle; +static const size_t POWTaskStackSize = 512 / 4; +uint32_t POWTaskBuffer[POWTaskStackSize]; +osStaticThreadDef_t POWTaskControlBlock; + // End FreeRTOS // Main sets up the hardware then hands over to the FreeRTOS kernel int main(void) { @@ -40,20 +46,21 @@ int main(void) { settingsWereReset = restoreSettings(); // load the settings from flash resetWatchdog(); /* Create the thread(s) */ - /* definition and creation of GUITask */ - osThreadStaticDef(GUITask, startGUITask, osPriorityBelowNormal, 0, - GUITaskStackSize, GUITaskBuffer, &GUITaskControlBlock); + /* definition and creation of POWTask - Power management for QC */ + osThreadStaticDef(POWTask, startPOWTask, osPriorityAboveNormal, 0, POWTaskStackSize, POWTaskBuffer, &POWTaskControlBlock); + POWTaskHandle = osThreadCreate(osThread(POWTask), NULL); + + /* definition and creation of GUITask - The OLED control & update*/ + osThreadStaticDef(GUITask, startGUITask, osPriorityBelowNormal, 0, GUITaskStackSize, GUITaskBuffer, &GUITaskControlBlock); GUITaskHandle = osThreadCreate(osThread(GUITask), NULL); - /* definition and creation of PIDTask */ - osThreadStaticDef(PIDTask, startPIDTask, osPriorityRealtime, 0, - PIDTaskStackSize, PIDTaskBuffer, &PIDTaskControlBlock); + /* definition and creation of PIDTask - Heating control*/ + osThreadStaticDef(PIDTask, startPIDTask, osPriorityRealtime, 0, PIDTaskStackSize, PIDTaskBuffer, &PIDTaskControlBlock); PIDTaskHandle = osThreadCreate(osThread(PIDTask), NULL); - osThreadStaticDef(MOVTask, startMOVTask, osPriorityNormal, 0, - MOVTaskStackSize, MOVTaskBuffer, &MOVTaskControlBlock); + /* definition and creation of MOVTask - Accelerometer management */ + osThreadStaticDef(MOVTask, startMOVTask, osPriorityNormal, 0, MOVTaskStackSize, MOVTaskBuffer, &MOVTaskControlBlock); MOVTaskHandle = osThreadCreate(osThread(MOVTask), NULL); - resetWatchdog(); /* Start scheduler */ diff --git a/workspace/TS100/Core/Threads/MOVThread.cpp b/workspace/TS100/Core/Threads/MOVThread.cpp index c26e4294..d9d5d160 100644 --- a/workspace/TS100/Core/Threads/MOVThread.cpp +++ b/workspace/TS100/Core/Threads/MOVThread.cpp @@ -107,7 +107,6 @@ inline void readAccelerometer(int16_t &tx, int16_t &ty, int16_t &tz, Orientation } } void startMOVTask(void const *argument __unused) { - postRToSInit(); detectAccelerometerVersion(); osDelay(TICKS_100MS / 2); // wait ~50ms for setup of accel to finalise lastMovementTime = 0; @@ -168,6 +167,5 @@ void startMOVTask(void const *argument __unused) { } osDelay(TICKS_100MS); // Slow down update rate - power_check(); } } diff --git a/workspace/TS100/Core/Threads/POWThread.cpp b/workspace/TS100/Core/Threads/POWThread.cpp new file mode 100644 index 00000000..f87fed87 --- /dev/null +++ b/workspace/TS100/Core/Threads/POWThread.cpp @@ -0,0 +1,27 @@ +/* + * POWThread.cpp + * + * Created on: 16 Jan 2021 + * Author: Ralim + */ + +#include "BSP.h" +#include "FreeRTOS.h" +#include "QC3.h" +#include "Settings.h" +#include "cmsis_os.h" +#include "main.hpp" +#include "stdlib.h" +#include "task.h" + +// Small worker thread to handle power (mostly QC) related steps + + + +void startPOWTask(void const *argument __unused) { + postRToSInit(); + for (;;) { + osDelay(TICKS_100MS); // Slow down update rate + power_check(); + } +} From 6b5c40fa6ce55e12fc2db1ef934da021058f812a Mon Sep 17 00:00:00 2001 From: discip <53649486+discip@users.noreply.github.com> Date: Sat, 16 Jan 2021 00:25:26 +0100 Subject: [PATCH 13/17] Update translation_en.json --- Translation Editor/translation_en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Translation Editor/translation_en.json b/Translation Editor/translation_en.json index 9c107686..d208a386 100644 --- a/Translation Editor/translation_en.json +++ b/Translation Editor/translation_en.json @@ -274,7 +274,7 @@ "Allow locking", "buttons" ], - "desc": "When soldering, long press on both buttons, to lock them " + "desc": "When soldering, long press both buttons, to lock them " } } } From 5379838f2c653b053bec63dab4dcfb6bcdd08b86 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 16 Jan 2021 11:22:11 +1100 Subject: [PATCH 14/17] Allow P64 i2c before rtos --- .../TS100/Core/BSP/Pine64/I2C_Wrapper.cpp | 63 ++++++++----------- 1 file changed, 25 insertions(+), 38 deletions(-) diff --git a/workspace/TS100/Core/BSP/Pine64/I2C_Wrapper.cpp b/workspace/TS100/Core/BSP/Pine64/I2C_Wrapper.cpp index db011a89..4e9b41f3 100755 --- a/workspace/TS100/Core/BSP/Pine64/I2C_Wrapper.cpp +++ b/workspace/TS100/Core/BSP/Pine64/I2C_Wrapper.cpp @@ -25,8 +25,7 @@ uint8_t FRToSI2C::I2C_RegisterRead(uint8_t add, uint8_t reg) { return temp; } -bool FRToSI2C::Mem_Read(uint16_t DevAddress, uint16_t read_address, - uint8_t *p_buffer, uint16_t number_of_byte) { +bool FRToSI2C::Mem_Read(uint16_t DevAddress, uint16_t read_address, uint8_t *p_buffer, uint16_t number_of_byte) { if (!lock()) return false; i2c_interrupt_disable(I2C0, I2C_INT_ERR); @@ -61,8 +60,7 @@ bool FRToSI2C::Mem_Read(uint16_t DevAddress, uint16_t read_address, /* enable acknowledge */ i2c_ack_config(I2C0, I2C_ACK_ENABLE); /* i2c master sends start signal only when the bus is idle */ - while (i2c_flag_get(I2C0, I2C_FLAG_I2CBSY) - && (timeout < I2C_TIME_OUT )) { + while (i2c_flag_get(I2C0, I2C_FLAG_I2CBSY) && (timeout < I2C_TIME_OUT )) { timeout++; } if (timeout < I2C_TIME_OUT) { @@ -83,8 +81,7 @@ bool FRToSI2C::Mem_Read(uint16_t DevAddress, uint16_t read_address, break; case I2C_SEND_ADDRESS: /* i2c master sends START signal successfully */ - while ((!i2c_flag_get(I2C0, I2C_FLAG_SBSEND)) - && (timeout < I2C_TIME_OUT )) { + while ((!i2c_flag_get(I2C0, I2C_FLAG_SBSEND)) && (timeout < I2C_TIME_OUT )) { timeout++; } if (timeout < I2C_TIME_OUT) { @@ -104,15 +101,13 @@ bool FRToSI2C::Mem_Read(uint16_t DevAddress, uint16_t read_address, break; case I2C_CLEAR_ADDRESS_FLAG: /* address flag set means i2c slave sends ACK */ - while ((!i2c_flag_get(I2C0, I2C_FLAG_ADDSEND)) - && (timeout < I2C_TIME_OUT )) { + while ((!i2c_flag_get(I2C0, I2C_FLAG_ADDSEND)) && (timeout < I2C_TIME_OUT )) { timeout++; if (i2c_flag_get(I2C0, I2C_FLAG_AERR)) { i2c_flag_clear(I2C0, I2C_FLAG_AERR); i2c_stop_on_bus(I2C0); /* i2c master sends STOP signal successfully */ - while ((I2C_CTL0(I2C0) & 0x0200) - && (timeout < I2C_TIME_OUT )) { + while ((I2C_CTL0(I2C0) & 0x0200) && (timeout < I2C_TIME_OUT )) { timeout++; } // Address NACK'd @@ -138,8 +133,7 @@ bool FRToSI2C::Mem_Read(uint16_t DevAddress, uint16_t read_address, case I2C_TRANSMIT_DATA: if (0 == in_rx_cycle) { /* wait until the transmit data buffer is empty */ - while ((!i2c_flag_get(I2C0, I2C_FLAG_TBE)) - && (timeout < I2C_TIME_OUT )) { + while ((!i2c_flag_get(I2C0, I2C_FLAG_TBE)) && (timeout < I2C_TIME_OUT )) { timeout++; } if (timeout < I2C_TIME_OUT) { @@ -152,8 +146,7 @@ bool FRToSI2C::Mem_Read(uint16_t DevAddress, uint16_t read_address, in_rx_cycle = 0; } /* wait until BTC bit is set */ - while ((!i2c_flag_get(I2C0, I2C_FLAG_BTC)) - && (timeout < I2C_TIME_OUT )) { + while ((!i2c_flag_get(I2C0, I2C_FLAG_BTC)) && (timeout < I2C_TIME_OUT )) { timeout++; } if (timeout < I2C_TIME_OUT) { @@ -239,8 +232,7 @@ bool FRToSI2C::Mem_Read(uint16_t DevAddress, uint16_t read_address, return true; } -bool FRToSI2C::Mem_Write(uint16_t DevAddress, uint16_t MemAddress, - uint8_t *p_buffer, uint16_t number_of_byte) { +bool FRToSI2C::Mem_Write(uint16_t DevAddress, uint16_t MemAddress, uint8_t *p_buffer, uint16_t number_of_byte) { if (!lock()) return false; @@ -257,8 +249,7 @@ bool FRToSI2C::Mem_Write(uint16_t DevAddress, uint16_t MemAddress, switch (state) { case I2C_START: /* i2c master sends start signal only when the bus is idle */ - while (i2c_flag_get(I2C0, I2C_FLAG_I2CBSY) - && (timeout < I2C_TIME_OUT )) { + while (i2c_flag_get(I2C0, I2C_FLAG_I2CBSY) && (timeout < I2C_TIME_OUT )) { timeout++; } if (timeout < I2C_TIME_OUT) { @@ -273,8 +264,7 @@ bool FRToSI2C::Mem_Write(uint16_t DevAddress, uint16_t MemAddress, break; case I2C_SEND_ADDRESS: /* i2c master sends START signal successfully */ - while ((!i2c_flag_get(I2C0, I2C_FLAG_SBSEND)) - && (timeout < I2C_TIME_OUT )) { + while ((!i2c_flag_get(I2C0, I2C_FLAG_SBSEND)) && (timeout < I2C_TIME_OUT )) { timeout++; } if (timeout < I2C_TIME_OUT) { @@ -290,15 +280,13 @@ bool FRToSI2C::Mem_Write(uint16_t DevAddress, uint16_t MemAddress, break; case I2C_CLEAR_ADDRESS_FLAG: /* address flag set means i2c slave sends ACK */ - while ((!i2c_flag_get(I2C0, I2C_FLAG_ADDSEND)) - && (timeout < I2C_TIME_OUT )) { + while ((!i2c_flag_get(I2C0, I2C_FLAG_ADDSEND)) && (timeout < I2C_TIME_OUT )) { timeout++; if (i2c_flag_get(I2C0, I2C_FLAG_AERR)) { i2c_flag_clear(I2C0, I2C_FLAG_AERR); i2c_stop_on_bus(I2C0); /* i2c master sends STOP signal successfully */ - while ((I2C_CTL0(I2C0) & 0x0200) - && (timeout < I2C_TIME_OUT )) { + while ((I2C_CTL0(I2C0) & 0x0200) && (timeout < I2C_TIME_OUT )) { timeout++; } // Address NACK'd @@ -323,8 +311,7 @@ bool FRToSI2C::Mem_Write(uint16_t DevAddress, uint16_t MemAddress, break; case I2C_TRANSMIT_DATA: /* wait until the transmit data buffer is empty */ - while ((!i2c_flag_get(I2C0, I2C_FLAG_TBE)) - && (timeout < I2C_TIME_OUT )) { + while ((!i2c_flag_get(I2C0, I2C_FLAG_TBE)) && (timeout < I2C_TIME_OUT )) { timeout++; } if (timeout < I2C_TIME_OUT) { @@ -409,18 +396,22 @@ bool FRToSI2C::lock() { if (I2CSemaphore == nullptr) { return false; } + if (xTaskGetSchedulerState() != taskSCHEDULER_RUNNING) { + return true; + } return xSemaphoreTake(I2CSemaphore, TICKS_SECOND) == pdTRUE; } void FRToSI2C::unlock() { + if (xTaskGetSchedulerState() != taskSCHEDULER_RUNNING) { + return; + } xSemaphoreGive(I2CSemaphore); } -bool FRToSI2C::writeRegistersBulk(const uint8_t address, - const I2C_REG *registers, const uint8_t registersLength) { +bool FRToSI2C::writeRegistersBulk(const uint8_t address, const I2C_REG *registers, const uint8_t registersLength) { for (int index = 0; index < registersLength; index++) { - if (!I2C_RegisterWrite(address, registers[index].reg, - registers[index].val)) { + if (!I2C_RegisterWrite(address, registers[index].reg, registers[index].val)) { return false; } if (registers[index].pause_ms) { @@ -447,8 +438,7 @@ bool FRToSI2C::wakePart(uint16_t DevAddress) { switch (state) { case I2C_START: /* i2c master sends start signal only when the bus is idle */ - while (i2c_flag_get(I2C0, I2C_FLAG_I2CBSY) - && (timeout < I2C_TIME_OUT )) { + while (i2c_flag_get(I2C0, I2C_FLAG_I2CBSY) && (timeout < I2C_TIME_OUT )) { timeout++; } if (timeout < I2C_TIME_OUT) { @@ -463,8 +453,7 @@ bool FRToSI2C::wakePart(uint16_t DevAddress) { break; case I2C_SEND_ADDRESS: /* i2c master sends START signal successfully */ - while ((!i2c_flag_get(I2C0, I2C_FLAG_SBSEND)) - && (timeout < I2C_TIME_OUT )) { + while ((!i2c_flag_get(I2C0, I2C_FLAG_SBSEND)) && (timeout < I2C_TIME_OUT )) { timeout++; } if (timeout < I2C_TIME_OUT) { @@ -480,15 +469,13 @@ bool FRToSI2C::wakePart(uint16_t DevAddress) { break; case I2C_CLEAR_ADDRESS_FLAG: /* address flag set means i2c slave sends ACK */ - while ((!i2c_flag_get(I2C0, I2C_FLAG_ADDSEND)) - && (timeout < I2C_TIME_OUT )) { + while ((!i2c_flag_get(I2C0, I2C_FLAG_ADDSEND)) && (timeout < I2C_TIME_OUT )) { timeout++; if (i2c_flag_get(I2C0, I2C_FLAG_AERR)) { i2c_flag_clear(I2C0, I2C_FLAG_AERR); i2c_stop_on_bus(I2C0); /* i2c master sends STOP signal successfully */ - while ((I2C_CTL0(I2C0) & 0x0200) - && (timeout < I2C_TIME_OUT )) { + while ((I2C_CTL0(I2C0) & 0x0200) && (timeout < I2C_TIME_OUT )) { timeout++; } // Address NACK'd From b961311a5ca46043a25a68701680fcc2fb2e3f6e Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 16 Jan 2021 16:03:35 +1100 Subject: [PATCH 15/17] Fix ifdef for inverted accel in TS80/TS80P This should fix #768 --- workspace/TS100/Core/BSP/Miniware/Model_Config.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/workspace/TS100/Core/BSP/Miniware/Model_Config.h b/workspace/TS100/Core/BSP/Miniware/Model_Config.h index 664208ad..f961048d 100644 --- a/workspace/TS100/Core/BSP/Miniware/Model_Config.h +++ b/workspace/TS100/Core/BSP/Miniware/Model_Config.h @@ -29,7 +29,7 @@ #define ACCEL_LIS #define POW_QC #define TEMP_TMP36 -#define ACCEL_ORI_FLIP +#define LIS_ORI_FLIP #define OLED_FLIP #define BATTFILTERDEPTH 8 #endif @@ -41,7 +41,7 @@ #define POW_QC #define TEMP_NTC #define I2C_SOFT -#define ACCEL_ORI_FLIP +#define LIS_ORI_FLIP #define OLED_FLIP #define BATTFILTERDEPTH 8 #endif From a17b3c7f0b4f860ed55f91d604ac9ffeefad6e0b Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 16 Jan 2021 17:18:16 +1100 Subject: [PATCH 16/17] Release code bump --- workspace/TS100/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workspace/TS100/version.h b/workspace/TS100/version.h index 0f2ac422..96fba0c7 100644 --- a/workspace/TS100/version.h +++ b/workspace/TS100/version.h @@ -4,4 +4,4 @@ * i.e.: BUILD_VERSION = 'Rel. v2.08' --> Will generated to: 'v2.08.1a2b3c4' */ -#define BUILD_VERSION "v2.13" +#define BUILD_VERSION "v2.14" From d5a866f88c6a620f7843d3845ddc67885aae4453 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Date: Sat, 16 Jan 2021 11:37:15 +0100 Subject: [PATCH 17/17] TS100: fix make dependency computation Change the generated targets to be the actual object files to be build. Previously the target name was the dependency file itself. As no other targets required the dependency file, those computed dependencies were never used. --- workspace/TS100/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/workspace/TS100/Makefile b/workspace/TS100/Makefile index 9f0e98e3..e5abf41e 100644 --- a/workspace/TS100/Makefile +++ b/workspace/TS100/Makefile @@ -85,8 +85,8 @@ CPUFLAGS= -march=rv32imac \ DEV_LDFLAGS= -lstdc++ -nostartfiles -Xlinker --gc-sections --specs=nosys.specs -u _isatty -u _write -u _sbrk -u _read -u _close -u _fstat -u _lseek DEV_AFLAGS= -nostartfiles -ffreestanding -fno-common -Os -flto DEV_GLOBAL_DEFS= -DEV_CFLAGS= -MMD -MP -MF "$(@:%.o=%.d)" -MT "$(@:%.o=%.d)" -DEV_CXXFLAGS= -MMD -MP -MF "$(@:%.o=%.d)" -MT "$(@:%.o=%.d)" +DEV_CFLAGS= -MMD -MP -MF "$(@:%.o=%.d)" -MT "$@" +DEV_CXXFLAGS= -MMD -MP -MF "$(@:%.o=%.d)" -MT "$@" endif INCLUDES = -I$(APP_INC_DIR) \