Merge branch 'master' into patch-5

This commit is contained in:
HanaO00
2021-01-16 12:18:36 +01:00
committed by GitHub
18 changed files with 394 additions and 204 deletions

View File

@@ -274,7 +274,7 @@
"Allow locking", "Allow locking",
"buttons" "buttons"
], ],
"desc": "When soldering, long press on both buttons, to lock them <D=disable | B=\"boost mode\" only | F=full locking>" "desc": "When soldering, long press both buttons, to lock them <D=disable | B=\"boost mode\" only | F=full locking>"
} }
} }
} }

View File

@@ -4,31 +4,31 @@
"cyrillicGlyphs": false, "cyrillicGlyphs": false,
"messages": { "messages": {
"SettingsCalibrationDone": "Kalibráció befejezve!", "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?", "SettingsResetWarning": "Biztosan visszaállítja a beállításokat az alapértelmezett értékekre?",
"UVLOWarningString": "DC KEVÉS", "UVLOWarningString": "DC KEVÉS",
"UndervoltageString": "Alulfeszültség", "UndervoltageString": "Alulfeszültség",
"InputVoltageString": "Bemenet V: ", "InputVoltageString": "Bemenet V: ",
"WarningTipTempString": "Hegy hő: ", "WarningTipTempString": "Hegy hő: ",
"BadTipString": "HEGY HIB", "BadTipString": "PÁKAHIBA",
"SleepingSimpleString": "Zzzz", "SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Alvás...", "SleepingAdvancedString": "Alvás...",
"WarningSimpleString": "FORR", "WarningSimpleString": "FORRÓ!",
"WarningAdvancedString": "!! FORRÓ HEGY !!", "WarningAdvancedString": "!! FORRÓ PÁKA !!",
"SleepingTipAdvancedString": "Hegy:", "SleepingTipAdvancedString": "Páka:",
"IdleTipString": "Hegy:", "IdleTipString": "Páka:",
"IdleSetString": " Cél:", "IdleSetString": "Cél:",
"TipDisconnectedString": "HEGY LEVÉVE", "TipDisconnectedString": "PÁKA LEVÉVE",
"SolderingAdvancedPowerPrompt": "Telj: ", "SolderingAdvancedPowerPrompt": "Telj: ",
"OffString": "Ki", "OffString": "Ki",
"ResetOKMessage": "Reset OK", "ResetOKMessage": "Törlés OK",
"YourGainMessage": "Your gain:", "YourGainMessage": "Erősítés:",
"SettingsResetMessage": "Settings were\nreset!", "SettingsResetMessage": "Beállítások\ntörölve!",
"NoAccelerometerMessage": "No accelerometer\ndetected!", "NoAccelerometerMessage": "Nincs gyorsulásmérő!",
"NoPowerDeliveryMessage": "No USB-PD IC\ndetected!", "NoPowerDeliveryMessage": "Nincs USB-PD IC!",
"LockingKeysString": " LOCKED", "LockingKeysString": "LEZÁRVA",
"UnlockingKeysString": "UNLOCKED", "UnlockingKeysString": "FELOLDVA",
"WarningKeysLockedString": "!LOCKED!" "WarningKeysLockedString": "!LEZÁRVA!"
}, },
"characters": { "characters": {
"SettingRightChar": "J", "SettingRightChar": "J",
@@ -36,17 +36,17 @@
"SettingAutoChar": "A", "SettingAutoChar": "A",
"SettingFastChar": "G", "SettingFastChar": "G",
"SettingSlowChar": "L", "SettingSlowChar": "L",
"SettingStartSolderingChar": "T", "SettingStartSolderingChar": "F",
"SettingStartSleepChar": "S", "SettingStartSleepChar": "Z",
"SettingStartSleepOffChar": "O", "SettingStartSleepOffChar": "S",
"SettingStartNoneChar": "F", "SettingStartNoneChar": "K",
"SettingSensitivityOff": "O", "SettingSensitivityOff": "0",
"SettingSensitivityLow": "L", "SettingSensitivityLow": "A",
"SettingSensitivityMedium": "M", "SettingSensitivityMedium": "K",
"SettingSensitivityHigh": "H", "SettingSensitivityHigh": "M",
"SettingLockDisableChar": "D", "SettingLockDisableChar": "K",
"SettingLockBoostChar": "B", "SettingLockBoostChar": "B",
"SettingLockFullChar": "F" "SettingLockFullChar": "T"
}, },
"menuGroups": { "menuGroups": {
"SolderingMenu": { "SolderingMenu": {
@@ -65,7 +65,7 @@
}, },
"UIMenu": { "UIMenu": {
"text2": [ "text2": [
"Felhasználó", "Felhasználói",
"felület" "felület"
], ],
"desc": "Felhasználói felület beállításai" "desc": "Felhasználói felület beállításai"
@@ -84,21 +84,21 @@
"Áram", "Áram",
"forrás" "forrás"
], ],
"desc": "Áramforrás. Beállítja a lekapcsolási feszültséget. <DC 10V> <S 3.3V cellánként>" "desc": "Kikapcsolási feszültség beállítása (DC:10V, S:3.3V/LiPo cella)"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "text2": [
"Alvási", "Alvási",
"hőfok" "hőmérs."
], ],
"desc": "Alvási hőmérséklet <C>" "desc": "Hőmérséklet alvó módban <C/F>"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "text2": [
"Alvás", "Alvás",
"időzítő" "időzítő"
], ],
"desc": "Alvás időzítő <perc/másodperc>" "desc": "Alvási időzítő <perc/másodperc>"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "text2": [
@@ -112,33 +112,33 @@
"Mozgás", "Mozgás",
"érzékenység" "é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": { "TemperatureUnit": {
"text2": [ "text2": [
"Hőmérséklet", "Hőmérséklet",
"mértékegysége" "mértékegysége"
], ],
"desc": "Hőmérséklet mértékegysége <C=Celsius F=Fahrenheit>" "desc": "Hőmérséklet mértékegysége (C=Celsius F=Fahrenheit)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "text2": [
"Részletes", "Részletes",
"készenlét" "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": { "DisplayRotation": {
"text2": [ "text2": [
"Kijelző", "Kijelző",
"tájolása" "tájolása"
], ],
"desc": "Kijelző tájolása <A. automatikus B. balkezes J. jobbkezes>" "desc": "Kijelző tájolása (A=automatikus B=balkezes J=jobbkezes)"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "text2": [
"Boost", "Boost",
"hőfok" "hőmérs."
], ],
"desc": "Hőmérséklet \"boost\" módban" "desc": "Hőmérséklet \"boost\" módban"
}, },
@@ -147,21 +147,21 @@
"Automatikus", "Automatikus",
"indítás" "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": { "CooldownBlink": {
"text2": [ "text2": [
"Villogás", "Villogás",
"hűléskor" "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": { "TemperatureCalibration": {
"text2": [ "text2": [
"Hőmérséklet", "Hőmérséklet",
"kalibrálása?" "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": { "SettingsReset": {
"text2": [ "text2": [
@@ -172,15 +172,15 @@
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "text2": [
"Bemeneti fesz", "Bemeneti fesz.",
"kalibrálása?" "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": { "AdvancedSoldering": {
"text2": [ "text2": [
"Részletes", "Részletes",
"forr. kép." "forr.kép"
], ],
"desc": "Részletes információk megjelenítése forrasztás közben" "desc": "Részletes információk megjelenítése forrasztás közben"
}, },
@@ -193,10 +193,10 @@
}, },
"TipModel": { "TipModel": {
"text2": [ "text2": [
"Forrasztóhegy", "Forr.páka",
"modell" "modell"
], ],
"desc": "Forrasztóhegy modell kiválasztása" "desc": "Forrasztópáka modell kiválasztása"
}, },
"SimpleCalibrationMode": { "SimpleCalibrationMode": {
"text2": [ "text2": [
@@ -214,66 +214,66 @@
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "text2": [
"Bemeneti", "Max. USB",
"teljesítmény" "fesz."
], ],
"desc": "A tápegység által leadott teljesítmény" "desc": "Maximális USB feszültség (QuickCharge)"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "text2": [
"Telj", "Teljesítm.",
"maximum" "maximum"
], ],
"desc": "Maximális teljesitmény beállitása <Watts>" "desc": "Maximális felvett teljesitmény beállitása"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "text2": [
"GOMB +-", "+/- gomb",
"Felcseréled?" "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": { "TempChangeShortStep": {
"text2": [ "text2": [
"Hömérséklet", "Hőm.váltás",
"váltás rövid?" "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 <C/F>"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "text2": [
"Hömérséklet", "Hőm.váltás",
"váltás hosszú?" "hosszú"
], ],
"desc": "Hömérséklet váltás hosszú gombnyomásrs bekapcsolva!" "desc": "Hőmérséklet váltás hosszú gombnyomásra <C/F>"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "text2": [
"Telj power", "Ébrentartó",
"bank üzem W" "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 <W>"
}, },
"TipGain": { "TipGain": {
"text2": [ "text2": [
"Modify", "Pákaerősítés",
"tip gain" ""
], ],
"desc": "Tip gain" "desc": "Pákaerősítés állítása"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "text2": [
"Hall Eff", "Alvásérzékelő",
"Sensitivity" "érzékenység"
], ],
"desc": "Sensitivity of the Hall effect sensor in detecting sleep <O=Off,L=Low,M=Medium,H=High>" "desc": "Alvásérzékelő gyorsulásmérő érzékenysége (0=ki A=alacsony K=közepes M=magas)"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "text2": [
"Allow buttons", "Lezárás",
"locking" "enged."
], ],
"desc": "When soldering, long press on both buttons lock them <D=Disable, B=Boost only, F=Full locking>" "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)"
} }
} }
} }

View File

@@ -253,7 +253,7 @@
"Moc", "Moc",
"impulsu" "impulsu"
], ],
"desc": "Utrzymuj moc impulsu na wybranym poziomie <W>" "desc": "W przypadku używania powerbanku, utrzymuj moc na poziomie <W> aby nie uśpić powerbanku"
}, },
"TipGain": { "TipGain": {
"text2": [ "text2": [
@@ -277,4 +277,4 @@
"desc": "W trybie lutowania, wciśnij oba przyciski aby je zablokować <O-Wyłączona, B-tylko Boost, P-pełna blokada>" "desc": "W trybie lutowania, wciśnij oba przyciski aby je zablokować <O-Wyłączona, B-tylko Boost, P-pełna blokada>"
} }
} }
} }

View File

@@ -1,34 +1,34 @@
{ {
"languageCode": "SL", "languageCode": "SL",
"languageLocalName": "Slovensko", "languageLocalName": "Slovenščina",
"cyrillicGlyphs": false, "cyrillicGlyphs": false,
"messages": { "messages": {
"SettingsCalibrationDone": "Kalibracija opravljena!", "SettingsCalibrationDone": "Kalibracija opravljena!",
"SettingsCalibrationWarning": "Preden nadaljujete, mora biti konica na sobni temperaturi!", "SettingsCalibrationWarning": "Pred nadaljevanjem mora biti konica segreta na sobno temperaturo!",
"SettingsResetWarning": "Ste prepričani, da želite ponastaviti nastavitve na privzete vrednosti?", "SettingsResetWarning": "Res želite ponastaviti na privzete nastavitve?",
"UVLOWarningString": "NIZKA U", "UVLOWarningString": "NIZKA U",
"UndervoltageString": "Nizka napetost", "UndervoltageString": "Nizka napetost",
"InputVoltageString": "Vhodna U: ", "InputVoltageString": "Vhodna U: ",
"WarningTipTempString": "Temp. kon.: ", "WarningTipTempString": "Temp. kon.: ",
"BadTipString": "OKVARA K", "BadTipString": "KONICA?",
"SleepingSimpleString": "Zzzz", "SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Spim...", "SleepingAdvancedString": "Spim...",
"WarningSimpleString": "HOT!", "WarningSimpleString": "VROČ",
"WarningAdvancedString": "!!!VROČA KON.!!!", "WarningAdvancedString": "!!VROČA KONICA!!",
"SleepingTipAdvancedString": "Knica:", "SleepingTipAdvancedString": "Konica",
"IdleTipString": "Kon:", "IdleTipString": "Kon:",
"IdleSetString": " nst.:", "IdleSetString": " temp:",
"TipDisconnectedString": "KONICA ODSTRANJ.", "TipDisconnectedString": "NI KONICE",
"SolderingAdvancedPowerPrompt": "Moč: ", "SolderingAdvancedPowerPrompt": "Moč: ",
"OffString": "Izk", "OffString": "Off",
"ResetOKMessage": "Reset OK", "ResetOKMessage": "Reset OK",
"YourGainMessage": "Ojačan.:", "YourGainMessage": "Ojačenje",
"SettingsResetMessage": "Settings were\nreset!", "SettingsResetMessage": "Nastavitve OK!",
"NoAccelerometerMessage": "No accelerometer\ndetected!", "NoAccelerometerMessage": "Ni pospeševalnik",
"NoPowerDeliveryMessage": "No USB-PD IC\ndetected!", "NoPowerDeliveryMessage": "Ni USB-PD čipa!",
"LockingKeysString": " LOCKED", "LockingKeysString": "ZAKLENJ.",
"UnlockingKeysString": "UNLOCKED", "UnlockingKeysString": "ODKLENJ.",
"WarningKeysLockedString": "!LOCKED!" "WarningKeysLockedString": "ZAKLENJ."
}, },
"characters": { "characters": {
"SettingRightChar": "D", "SettingRightChar": "D",
@@ -36,17 +36,17 @@
"SettingAutoChar": "S", "SettingAutoChar": "S",
"SettingFastChar": "H", "SettingFastChar": "H",
"SettingSlowChar": "P", "SettingSlowChar": "P",
"SettingStartSolderingChar": "T", "SettingStartSolderingChar": "S",
"SettingStartSleepChar": "S", "SettingStartSleepChar": "Z",
"SettingStartSleepOffChar": "O", "SettingStartSleepOffChar": "V",
"SettingStartNoneChar": "F", "SettingStartNoneChar": "U",
"SettingSensitivityOff": "O", "SettingSensitivityOff": "U",
"SettingSensitivityLow": "L", "SettingSensitivityLow": "N",
"SettingSensitivityMedium": "M", "SettingSensitivityMedium": "S",
"SettingSensitivityHigh": "H", "SettingSensitivityHigh": "V",
"SettingLockDisableChar": "D", "SettingLockDisableChar": "O",
"SettingLockBoostChar": "B", "SettingLockBoostChar": "L",
"SettingLockFullChar": "F" "SettingLockFullChar": "P"
}, },
"menuGroups": { "menuGroups": {
"SolderingMenu": { "SolderingMenu": {
@@ -58,7 +58,7 @@
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "text2": [
"Načini", "Način",
"spanja" "spanja"
], ],
"desc": "Nastavitve varčevanja z energijo" "desc": "Nastavitve varčevanja z energijo"
@@ -91,70 +91,70 @@
"Temp. med", "Temp. med",
"spanjem" "spanjem"
], ],
"desc": "Temperatura med spanjem <C>" "desc": "Temperatura med spanjem"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "text2": [
"Čas do", "Čas do",
"spanja" "spanja"
], ],
"desc": "Čas pred spanjem <minute/sekunde>" "desc": "Čas pred spanjem <S=sekunde | M=minute>"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "text2": [
"Čas do", "Čas do",
"izklopa" "izklopa"
], ],
"desc": "Čas pred izklopom <minute>" "desc": "Čas do izklopa <M=minute>"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "text2": [
"Občutljivost", "Občutljivost",
"premikanja" "premikanja"
], ],
"desc": "Občutljivost premikanja <0.izklopljeno 1.najmanj 9.najbolj občutljivo>" "desc": "0=izklopljeno | 1=najmanjša | ... | 9=največja"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "text2": [
"Enota za", "Enota za",
"temperaturo" "temperaturo"
], ],
"desc": "Enota za temperaturo <C=celzija F=fahrenheita>" "desc": "Enota za temperaturo <C=celzij | F=fahrenheit>"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "text2": [
"Več info na", "Več info. na",
"zaslonu v mir" "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": { "DisplayRotation": {
"text2": [ "text2": [
"Orientacija", "Orientacija",
"zaslona" "zaslona"
], ],
"desc": "Orientacija zaslona <S. samodejno L. levo D. desno>" "desc": "S=samodejno | L=levičar | D=desničar"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "text2": [
"Temperat.", "Pospešena",
"v boost" "temp."
], ],
"desc": "Temperatura v \"boost\" načinu" "desc": "Temperatura v pospešenem načinu"
}, },
"AutoStart": { "AutoStart": {
"text2": [ "text2": [
"Samodejni", "Samodejni",
"zagon" "zagon"
], ],
"desc": "Samodejno segrej konico ob vklopu. T=segrej, S=spanje, F=izklop" "desc": "Samodejno gretje konice ob vklopu <U=ugasnjeno | S=spajkanje | Z=spanje | V=spanje na sobni temperaturi>"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "text2": [
"Utripanje med", "Utripanje med",
"hlajenjem" "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": { "TemperatureCalibration": {
"text2": [ "text2": [
@@ -175,7 +175,7 @@
"Kalibriram", "Kalibriram",
"vhodno napetost?" "vhodno napetost?"
], ],
"desc": "Kalibracija VIN. Nastavitve z gumbi, dolgi pritisk za izhod." "desc": "Kalibracija VIN <nastavitve z gumbi, dolg pritisk za izhod>"
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "text2": [
@@ -189,11 +189,11 @@
"Hitrost", "Hitrost",
"besedila" "besedila"
], ],
"desc": "Hitrost, s katero se prikazuje besedilo" "desc": "Hitrost, s katero se prikazuje besedilo <P=počasi | H=hitro>"
}, },
"TipModel": { "TipModel": {
"text2": [ "text2": [
"Model", "Tip",
"konice" "konice"
], ],
"desc": "Izbira tipa konice" "desc": "Izbira tipa konice"
@@ -214,66 +214,66 @@
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "text2": [
"Moč napajalnega", "QC",
"vira" "napetost"
], ],
"desc": "Moč v W napajalnega vira" "desc": "Moč napajalnega vira v vatih [W]"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "text2": [
"Power", "Meja",
"Limit" "moči"
], ],
"desc": "Maximum power the iron can use <Watts>" "desc": "Največja dovoljena moč v vatih [W]"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "text2": [
"Key +-", "Obrni",
"reverse?" "tipki + -?"
], ],
"desc": "Reverse the tip temperature change buttons plus minus assignment." "desc": "Zamenjaj funkciji gumbov."
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "text2": [
"Temp change", "Kratka sprememba",
"short?" "temperature?"
], ],
"desc": "Temperature change steps on short button press!" "desc": "Temperatura se spremeni ob kratkem pritisku na gumb."
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "text2": [
"Temp change", "Dolga sprememba",
"long?" "temperature?"
], ],
"desc": "Temperature change steps on long button press!" "desc": "Temperatura se spremeni ob dolgem pritisku na gumb."
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "text2": [
"Power", "Pulz",
"Pulse W" "moči"
], ],
"desc": "Keep awake pulse power intensity" "desc": "Velikost moči za vzdrževanje budnosti."
}, },
"TipGain": { "TipGain": {
"text2": [ "text2": [
"Modify", "Nastavi",
"tip gain" "moč kon."
], ],
"desc": "Tip gain" "desc": "Nastavi moč konice."
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "text2": [
"Hall Eff", "Občut.",
"Sensitivity" "Hall son"
], ],
"desc": "Sensitivity of the Hall effect sensor in detecting sleep <O=Off,L=Low,M=Medium,H=High>" "desc": "Občutljivost Hallove sonde za zaznavanje spanja <U=ugasnjen | N=nizka | S=srednja | V=visoka>"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "text2": [
"Allow buttons", "Omogoči",
"locking" "zaklep gumbov"
], ],
"desc": "When soldering, long press on both buttons lock them <D=Disable, B=Boost only, F=Full locking>" "desc": "Za zaklep med spajkanjem drži oba gumba <O=onemogoči | L=le pospešeno | P=polno>"
} }
} }
} }

View File

@@ -29,7 +29,7 @@
#define ACCEL_LIS #define ACCEL_LIS
#define POW_QC #define POW_QC
#define TEMP_TMP36 #define TEMP_TMP36
#define ACCEL_ORI_FLIP #define LIS_ORI_FLIP
#define OLED_FLIP #define OLED_FLIP
#define BATTFILTERDEPTH 8 #define BATTFILTERDEPTH 8
#endif #endif
@@ -41,7 +41,7 @@
#define POW_QC #define POW_QC
#define TEMP_NTC #define TEMP_NTC
#define I2C_SOFT #define I2C_SOFT
#define ACCEL_ORI_FLIP #define LIS_ORI_FLIP
#define OLED_FLIP #define OLED_FLIP
#define BATTFILTERDEPTH 8 #define BATTFILTERDEPTH 8
#endif #endif

View File

@@ -244,8 +244,6 @@ void fusb_reset() {
fusb_write_byte( FUSB_CONTROL0, 0x44); fusb_write_byte( FUSB_CONTROL0, 0x44);
/* Flush the RX buffer */ /* Flush the RX buffer */
fusb_write_byte( FUSB_CONTROL1, FUSB_CONTROL1_RX_FLUSH); 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) { if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED) {
I2CBB::unlock2(); I2CBB::unlock2();
} }

View File

@@ -25,8 +25,7 @@ uint8_t FRToSI2C::I2C_RegisterRead(uint8_t add, uint8_t reg) {
return temp; return temp;
} }
bool FRToSI2C::Mem_Read(uint16_t DevAddress, uint16_t read_address, bool FRToSI2C::Mem_Read(uint16_t DevAddress, uint16_t read_address, uint8_t *p_buffer, uint16_t number_of_byte) {
uint8_t *p_buffer, uint16_t number_of_byte) {
if (!lock()) if (!lock())
return false; return false;
i2c_interrupt_disable(I2C0, I2C_INT_ERR); i2c_interrupt_disable(I2C0, I2C_INT_ERR);
@@ -61,8 +60,7 @@ bool FRToSI2C::Mem_Read(uint16_t DevAddress, uint16_t read_address,
/* enable acknowledge */ /* enable acknowledge */
i2c_ack_config(I2C0, I2C_ACK_ENABLE); i2c_ack_config(I2C0, I2C_ACK_ENABLE);
/* i2c master sends start signal only when the bus is idle */ /* i2c master sends start signal only when the bus is idle */
while (i2c_flag_get(I2C0, I2C_FLAG_I2CBSY) while (i2c_flag_get(I2C0, I2C_FLAG_I2CBSY) && (timeout < I2C_TIME_OUT )) {
&& (timeout < I2C_TIME_OUT )) {
timeout++; timeout++;
} }
if (timeout < I2C_TIME_OUT) { if (timeout < I2C_TIME_OUT) {
@@ -83,8 +81,7 @@ bool FRToSI2C::Mem_Read(uint16_t DevAddress, uint16_t read_address,
break; break;
case I2C_SEND_ADDRESS: case I2C_SEND_ADDRESS:
/* i2c master sends START signal successfully */ /* i2c master sends START signal successfully */
while ((!i2c_flag_get(I2C0, I2C_FLAG_SBSEND)) while ((!i2c_flag_get(I2C0, I2C_FLAG_SBSEND)) && (timeout < I2C_TIME_OUT )) {
&& (timeout < I2C_TIME_OUT )) {
timeout++; timeout++;
} }
if (timeout < I2C_TIME_OUT) { if (timeout < I2C_TIME_OUT) {
@@ -104,15 +101,13 @@ bool FRToSI2C::Mem_Read(uint16_t DevAddress, uint16_t read_address,
break; break;
case I2C_CLEAR_ADDRESS_FLAG: case I2C_CLEAR_ADDRESS_FLAG:
/* address flag set means i2c slave sends ACK */ /* address flag set means i2c slave sends ACK */
while ((!i2c_flag_get(I2C0, I2C_FLAG_ADDSEND)) while ((!i2c_flag_get(I2C0, I2C_FLAG_ADDSEND)) && (timeout < I2C_TIME_OUT )) {
&& (timeout < I2C_TIME_OUT )) {
timeout++; timeout++;
if (i2c_flag_get(I2C0, I2C_FLAG_AERR)) { if (i2c_flag_get(I2C0, I2C_FLAG_AERR)) {
i2c_flag_clear(I2C0, I2C_FLAG_AERR); i2c_flag_clear(I2C0, I2C_FLAG_AERR);
i2c_stop_on_bus(I2C0); i2c_stop_on_bus(I2C0);
/* i2c master sends STOP signal successfully */ /* i2c master sends STOP signal successfully */
while ((I2C_CTL0(I2C0) & 0x0200) while ((I2C_CTL0(I2C0) & 0x0200) && (timeout < I2C_TIME_OUT )) {
&& (timeout < I2C_TIME_OUT )) {
timeout++; timeout++;
} }
// Address NACK'd // Address NACK'd
@@ -138,8 +133,7 @@ bool FRToSI2C::Mem_Read(uint16_t DevAddress, uint16_t read_address,
case I2C_TRANSMIT_DATA: case I2C_TRANSMIT_DATA:
if (0 == in_rx_cycle) { if (0 == in_rx_cycle) {
/* wait until the transmit data buffer is empty */ /* wait until the transmit data buffer is empty */
while ((!i2c_flag_get(I2C0, I2C_FLAG_TBE)) while ((!i2c_flag_get(I2C0, I2C_FLAG_TBE)) && (timeout < I2C_TIME_OUT )) {
&& (timeout < I2C_TIME_OUT )) {
timeout++; timeout++;
} }
if (timeout < I2C_TIME_OUT) { if (timeout < I2C_TIME_OUT) {
@@ -152,8 +146,7 @@ bool FRToSI2C::Mem_Read(uint16_t DevAddress, uint16_t read_address,
in_rx_cycle = 0; in_rx_cycle = 0;
} }
/* wait until BTC bit is set */ /* wait until BTC bit is set */
while ((!i2c_flag_get(I2C0, I2C_FLAG_BTC)) while ((!i2c_flag_get(I2C0, I2C_FLAG_BTC)) && (timeout < I2C_TIME_OUT )) {
&& (timeout < I2C_TIME_OUT )) {
timeout++; timeout++;
} }
if (timeout < I2C_TIME_OUT) { if (timeout < I2C_TIME_OUT) {
@@ -239,8 +232,7 @@ bool FRToSI2C::Mem_Read(uint16_t DevAddress, uint16_t read_address,
return true; return true;
} }
bool FRToSI2C::Mem_Write(uint16_t DevAddress, uint16_t MemAddress, bool FRToSI2C::Mem_Write(uint16_t DevAddress, uint16_t MemAddress, uint8_t *p_buffer, uint16_t number_of_byte) {
uint8_t *p_buffer, uint16_t number_of_byte) {
if (!lock()) if (!lock())
return false; return false;
@@ -257,8 +249,7 @@ bool FRToSI2C::Mem_Write(uint16_t DevAddress, uint16_t MemAddress,
switch (state) { switch (state) {
case I2C_START: case I2C_START:
/* i2c master sends start signal only when the bus is idle */ /* i2c master sends start signal only when the bus is idle */
while (i2c_flag_get(I2C0, I2C_FLAG_I2CBSY) while (i2c_flag_get(I2C0, I2C_FLAG_I2CBSY) && (timeout < I2C_TIME_OUT )) {
&& (timeout < I2C_TIME_OUT )) {
timeout++; timeout++;
} }
if (timeout < I2C_TIME_OUT) { if (timeout < I2C_TIME_OUT) {
@@ -273,8 +264,7 @@ bool FRToSI2C::Mem_Write(uint16_t DevAddress, uint16_t MemAddress,
break; break;
case I2C_SEND_ADDRESS: case I2C_SEND_ADDRESS:
/* i2c master sends START signal successfully */ /* i2c master sends START signal successfully */
while ((!i2c_flag_get(I2C0, I2C_FLAG_SBSEND)) while ((!i2c_flag_get(I2C0, I2C_FLAG_SBSEND)) && (timeout < I2C_TIME_OUT )) {
&& (timeout < I2C_TIME_OUT )) {
timeout++; timeout++;
} }
if (timeout < I2C_TIME_OUT) { if (timeout < I2C_TIME_OUT) {
@@ -290,15 +280,13 @@ bool FRToSI2C::Mem_Write(uint16_t DevAddress, uint16_t MemAddress,
break; break;
case I2C_CLEAR_ADDRESS_FLAG: case I2C_CLEAR_ADDRESS_FLAG:
/* address flag set means i2c slave sends ACK */ /* address flag set means i2c slave sends ACK */
while ((!i2c_flag_get(I2C0, I2C_FLAG_ADDSEND)) while ((!i2c_flag_get(I2C0, I2C_FLAG_ADDSEND)) && (timeout < I2C_TIME_OUT )) {
&& (timeout < I2C_TIME_OUT )) {
timeout++; timeout++;
if (i2c_flag_get(I2C0, I2C_FLAG_AERR)) { if (i2c_flag_get(I2C0, I2C_FLAG_AERR)) {
i2c_flag_clear(I2C0, I2C_FLAG_AERR); i2c_flag_clear(I2C0, I2C_FLAG_AERR);
i2c_stop_on_bus(I2C0); i2c_stop_on_bus(I2C0);
/* i2c master sends STOP signal successfully */ /* i2c master sends STOP signal successfully */
while ((I2C_CTL0(I2C0) & 0x0200) while ((I2C_CTL0(I2C0) & 0x0200) && (timeout < I2C_TIME_OUT )) {
&& (timeout < I2C_TIME_OUT )) {
timeout++; timeout++;
} }
// Address NACK'd // Address NACK'd
@@ -323,8 +311,7 @@ bool FRToSI2C::Mem_Write(uint16_t DevAddress, uint16_t MemAddress,
break; break;
case I2C_TRANSMIT_DATA: case I2C_TRANSMIT_DATA:
/* wait until the transmit data buffer is empty */ /* wait until the transmit data buffer is empty */
while ((!i2c_flag_get(I2C0, I2C_FLAG_TBE)) while ((!i2c_flag_get(I2C0, I2C_FLAG_TBE)) && (timeout < I2C_TIME_OUT )) {
&& (timeout < I2C_TIME_OUT )) {
timeout++; timeout++;
} }
if (timeout < I2C_TIME_OUT) { if (timeout < I2C_TIME_OUT) {
@@ -409,18 +396,22 @@ bool FRToSI2C::lock() {
if (I2CSemaphore == nullptr) { if (I2CSemaphore == nullptr) {
return false; return false;
} }
if (xTaskGetSchedulerState() != taskSCHEDULER_RUNNING) {
return true;
}
return xSemaphoreTake(I2CSemaphore, TICKS_SECOND) == pdTRUE; return xSemaphoreTake(I2CSemaphore, TICKS_SECOND) == pdTRUE;
} }
void FRToSI2C::unlock() { void FRToSI2C::unlock() {
if (xTaskGetSchedulerState() != taskSCHEDULER_RUNNING) {
return;
}
xSemaphoreGive(I2CSemaphore); xSemaphoreGive(I2CSemaphore);
} }
bool FRToSI2C::writeRegistersBulk(const uint8_t address, bool FRToSI2C::writeRegistersBulk(const uint8_t address, const I2C_REG *registers, const uint8_t registersLength) {
const I2C_REG *registers, const uint8_t registersLength) {
for (int index = 0; index < registersLength; index++) { for (int index = 0; index < registersLength; index++) {
if (!I2C_RegisterWrite(address, registers[index].reg, if (!I2C_RegisterWrite(address, registers[index].reg, registers[index].val)) {
registers[index].val)) {
return false; return false;
} }
if (registers[index].pause_ms) { if (registers[index].pause_ms) {
@@ -447,8 +438,7 @@ bool FRToSI2C::wakePart(uint16_t DevAddress) {
switch (state) { switch (state) {
case I2C_START: case I2C_START:
/* i2c master sends start signal only when the bus is idle */ /* i2c master sends start signal only when the bus is idle */
while (i2c_flag_get(I2C0, I2C_FLAG_I2CBSY) while (i2c_flag_get(I2C0, I2C_FLAG_I2CBSY) && (timeout < I2C_TIME_OUT )) {
&& (timeout < I2C_TIME_OUT )) {
timeout++; timeout++;
} }
if (timeout < I2C_TIME_OUT) { if (timeout < I2C_TIME_OUT) {
@@ -463,8 +453,7 @@ bool FRToSI2C::wakePart(uint16_t DevAddress) {
break; break;
case I2C_SEND_ADDRESS: case I2C_SEND_ADDRESS:
/* i2c master sends START signal successfully */ /* i2c master sends START signal successfully */
while ((!i2c_flag_get(I2C0, I2C_FLAG_SBSEND)) while ((!i2c_flag_get(I2C0, I2C_FLAG_SBSEND)) && (timeout < I2C_TIME_OUT )) {
&& (timeout < I2C_TIME_OUT )) {
timeout++; timeout++;
} }
if (timeout < I2C_TIME_OUT) { if (timeout < I2C_TIME_OUT) {
@@ -480,15 +469,13 @@ bool FRToSI2C::wakePart(uint16_t DevAddress) {
break; break;
case I2C_CLEAR_ADDRESS_FLAG: case I2C_CLEAR_ADDRESS_FLAG:
/* address flag set means i2c slave sends ACK */ /* address flag set means i2c slave sends ACK */
while ((!i2c_flag_get(I2C0, I2C_FLAG_ADDSEND)) while ((!i2c_flag_get(I2C0, I2C_FLAG_ADDSEND)) && (timeout < I2C_TIME_OUT )) {
&& (timeout < I2C_TIME_OUT )) {
timeout++; timeout++;
if (i2c_flag_get(I2C0, I2C_FLAG_AERR)) { if (i2c_flag_get(I2C0, I2C_FLAG_AERR)) {
i2c_flag_clear(I2C0, I2C_FLAG_AERR); i2c_flag_clear(I2C0, I2C_FLAG_AERR);
i2c_stop_on_bus(I2C0); i2c_stop_on_bus(I2C0);
/* i2c master sends STOP signal successfully */ /* i2c master sends STOP signal successfully */
while ((I2C_CTL0(I2C0) & 0x0200) while ((I2C_CTL0(I2C0) & 0x0200) && (timeout < I2C_TIME_OUT )) {
&& (timeout < I2C_TIME_OUT )) {
timeout++; timeout++;
} }
// Address NACK'd // Address NACK'd

View File

@@ -23,6 +23,7 @@
#define ENABLE_QC2 #define ENABLE_QC2
#define TEMP_TMP36 #define TEMP_TMP36
#define ACCEL_BMA #define ACCEL_BMA
#define ACCEL_SC7
#define HALL_SENSOR #define HALL_SENSOR
#define HALL_SI7210 #define HALL_SI7210
#define BATTFILTERDEPTH 32 #define BATTFILTERDEPTH 32

View File

@@ -9,7 +9,15 @@
#include <array> #include <array>
bool BMA223::detect() { 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[] = { // static const FRToSI2C::I2C_REG i2c_registers[] = { //

View File

@@ -0,0 +1,69 @@
/*
* SC7A20.cpp
*
* Created on: 18 Sep. 2020
* Author: Ralim
*/
#include <SC7A20.hpp>
#include <SC7A20_defines.h>
#include <array>
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];
}

View File

@@ -0,0 +1,33 @@
/*
* BMA223.hpp
*
* Created on: 18 Sep. 2020
* Author: Ralim
*/
#ifndef CORE_DRIVERS_SC7A20_HPP_
#define CORE_DRIVERS_SC7A20_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() {
uint8_t val = ((FRToSI2C::I2C_RegisterRead(SC7A20_ADDRESS, SC7A20_INT2_SOURCE) >> 2) - 1);
if (val == 1)
return Orientation::ORIENTATION_LEFT_HAND;
else if (val == 4 || val == 0)
return Orientation::ORIENTATION_RIGHT_HAND;
else
return Orientation::ORIENTATION_FLAT;
}
static void getAxisReadings(int16_t &x, int16_t &y, int16_t &z);
private:
};
#endif /* CORE_DRIVERS_BMA223_HPP_ */

View File

@@ -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_ */

View File

@@ -20,6 +20,7 @@ void vApplicationStackOverflowHook(TaskHandle_t *pxTask,
void startGUITask(void const *argument); void startGUITask(void const *argument);
void startPIDTask(void const *argument); void startPIDTask(void const *argument);
void startMOVTask(void const *argument); void startMOVTask(void const *argument);
void startPOWTask(void const *argument);
extern TaskHandle_t pidTaskNotification; extern TaskHandle_t pidTaskNotification;
extern uint8_t accelInit; extern uint8_t accelInit;
extern TickType_t lastMovementTime; extern TickType_t lastMovementTime;

View File

@@ -24,11 +24,17 @@ osThreadId PIDTaskHandle;
static const size_t PIDTaskStackSize = 512 / 4; static const size_t PIDTaskStackSize = 512 / 4;
uint32_t PIDTaskBuffer[PIDTaskStackSize]; uint32_t PIDTaskBuffer[PIDTaskStackSize];
osStaticThreadDef_t PIDTaskControlBlock; osStaticThreadDef_t PIDTaskControlBlock;
osThreadId MOVTaskHandle; osThreadId MOVTaskHandle;
static const size_t MOVTaskStackSize = 1024 / 4; static const size_t MOVTaskStackSize = 1024 / 4;
uint32_t MOVTaskBuffer[MOVTaskStackSize]; uint32_t MOVTaskBuffer[MOVTaskStackSize];
osStaticThreadDef_t MOVTaskControlBlock; osStaticThreadDef_t MOVTaskControlBlock;
osThreadId POWTaskHandle;
static const size_t POWTaskStackSize = 512 / 4;
uint32_t POWTaskBuffer[POWTaskStackSize];
osStaticThreadDef_t POWTaskControlBlock;
// End FreeRTOS // End FreeRTOS
// Main sets up the hardware then hands over to the FreeRTOS kernel // Main sets up the hardware then hands over to the FreeRTOS kernel
int main(void) { int main(void) {
@@ -40,20 +46,21 @@ int main(void) {
settingsWereReset = restoreSettings(); // load the settings from flash settingsWereReset = restoreSettings(); // load the settings from flash
resetWatchdog(); resetWatchdog();
/* Create the thread(s) */ /* Create the thread(s) */
/* definition and creation of GUITask */ /* definition and creation of POWTask - Power management for QC */
osThreadStaticDef(GUITask, startGUITask, osPriorityBelowNormal, 0, osThreadStaticDef(POWTask, startPOWTask, osPriorityAboveNormal, 0, POWTaskStackSize, POWTaskBuffer, &POWTaskControlBlock);
GUITaskStackSize, GUITaskBuffer, &GUITaskControlBlock); 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); GUITaskHandle = osThreadCreate(osThread(GUITask), NULL);
/* definition and creation of PIDTask */ /* definition and creation of PIDTask - Heating control*/
osThreadStaticDef(PIDTask, startPIDTask, osPriorityRealtime, 0, osThreadStaticDef(PIDTask, startPIDTask, osPriorityRealtime, 0, PIDTaskStackSize, PIDTaskBuffer, &PIDTaskControlBlock);
PIDTaskStackSize, PIDTaskBuffer, &PIDTaskControlBlock);
PIDTaskHandle = osThreadCreate(osThread(PIDTask), NULL); PIDTaskHandle = osThreadCreate(osThread(PIDTask), NULL);
osThreadStaticDef(MOVTask, startMOVTask, osPriorityNormal, 0, /* definition and creation of MOVTask - Accelerometer management */
MOVTaskStackSize, MOVTaskBuffer, &MOVTaskControlBlock); osThreadStaticDef(MOVTask, startMOVTask, osPriorityNormal, 0, MOVTaskStackSize, MOVTaskBuffer, &MOVTaskControlBlock);
MOVTaskHandle = osThreadCreate(osThread(MOVTask), NULL); MOVTaskHandle = osThreadCreate(osThread(MOVTask), NULL);
resetWatchdog(); resetWatchdog();
/* Start scheduler */ /* Start scheduler */

View File

@@ -6,6 +6,7 @@
*/ */
#include "BMA223.hpp" #include "BMA223.hpp"
#include "SC7A20.hpp"
#include "BSP.h" #include "BSP.h"
#include "FreeRTOS.h" #include "FreeRTOS.h"
#include "I2C_Wrapper.hpp" #include "I2C_Wrapper.hpp"
@@ -56,6 +57,14 @@ void detectAccelerometerVersion() {
DetectedAccelerometerVersion = 4; DetectedAccelerometerVersion = 4;
} }
} else } else
#endif
#ifdef ACCEL_SC7
if (SC7A20::detect()) {
// Setup the SC7A20 Accelerometer
if (SC7A20::initalize()) {
DetectedAccelerometerVersion = 5;
}
} else
#endif #endif
{ {
// disable imu sensitivity // disable imu sensitivity
@@ -86,13 +95,18 @@ inline void readAccelerometer(int16_t &tx, int16_t &ty, int16_t &tz, Orientation
MSA301::getAxisReadings(tx, ty, tz); MSA301::getAxisReadings(tx, ty, tz);
rotation = MSA301::getOrientation(); rotation = MSA301::getOrientation();
} else } else
#endif
#ifdef ACCEL_SC7
if (DetectedAccelerometerVersion == 5) {
SC7A20::getAxisReadings(tx, ty, tz);
rotation = SC7A20::getOrientation();
} else
#endif #endif
{ {
// do nothing :( // do nothing :(
} }
} }
void startMOVTask(void const *argument __unused) { void startMOVTask(void const *argument __unused) {
postRToSInit();
detectAccelerometerVersion(); detectAccelerometerVersion();
osDelay(TICKS_100MS / 2); // wait ~50ms for setup of accel to finalise osDelay(TICKS_100MS / 2); // wait ~50ms for setup of accel to finalise
lastMovementTime = 0; lastMovementTime = 0;
@@ -153,6 +167,5 @@ void startMOVTask(void const *argument __unused) {
} }
osDelay(TICKS_100MS); // Slow down update rate osDelay(TICKS_100MS); // Slow down update rate
power_check();
} }
} }

View File

@@ -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();
}
}

View File

@@ -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_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_AFLAGS= -nostartfiles -ffreestanding -fno-common -Os -flto
DEV_GLOBAL_DEFS= DEV_GLOBAL_DEFS=
DEV_CFLAGS= -MMD -MP -MF "$(@:%.o=%.d)" -MT "$(@:%.o=%.d)" DEV_CFLAGS= -MMD -MP -MF "$(@:%.o=%.d)" -MT "$@"
DEV_CXXFLAGS= -MMD -MP -MF "$(@:%.o=%.d)" -MT "$(@:%.o=%.d)" DEV_CXXFLAGS= -MMD -MP -MF "$(@:%.o=%.d)" -MT "$@"
endif endif
INCLUDES = -I$(APP_INC_DIR) \ INCLUDES = -I$(APP_INC_DIR) \

View File

@@ -4,4 +4,4 @@
* i.e.: BUILD_VERSION = 'Rel. v2.08' --> Will generated to: 'v2.08.1a2b3c4' * i.e.: BUILD_VERSION = 'Rel. v2.08' --> Will generated to: 'v2.08.1a2b3c4'
*/ */
#define BUILD_VERSION "v2.13" #define BUILD_VERSION "v2.14"