Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
348 commits
Select commit Hold shift + click to select a range
d04aada
bug fix (not showing 0 values), turn off animations to save CPU on cl…
neuweiler Mar 31, 2016
51f1063
adjust to arduino 1.6.7 and latest eclipse plugin version
Apr 7, 2016
2cdcb5a
fix typo
Apr 7, 2016
b000964
fix setting values of selects
Apr 7, 2016
93976ac
remove slewType, we'll only support linear slew-rate
Apr 8, 2016
ad66263
fix small issues
Apr 12, 2016
175413e
no debug stuff in repo
Apr 12, 2016
9bda664
increase update rate of ichip sockets
Apr 17, 2016
1c048c8
add ability to set log-level by device (non-persistent)
Apr 18, 2016
c136153
eliminate SSND (socket sned) with zero length
Apr 19, 2016
2a48e90
change kwH variables to energy consumption
May 24, 2016
29086a7
display combined throttle/brake level of motor controller instead of …
May 24, 2016
20c0fe7
fix display ranges of gauges
May 24, 2016
3e368f3
provide additional data from charger/dcdc to webSocktet
May 26, 2016
0307eac
display battery, DCDC, Charger, Flow data on dashboard
May 31, 2016
1732ea9
fix wrong battery temp which caused the charger not to start
neuweiler Jun 4, 2016
5ec63c6
fix scaling of torque for brake light (was at 10.0Nm which was too low)
neuweiler Jun 5, 2016
2178599
introduce new state: shutdown
neuweiler Jun 5, 2016
743e838
fixed bug in slew calculation, caused jerky reduction in power
neuweiler Jun 6, 2016
ddf1fcf
move mechanicalPower calc to method - brusa reports it, so don't calc
neuweiler Jun 9, 2016
ff2a71b
safeguard TickHandler to prevent double entries
neuweiler Jun 9, 2016
022a023
add new state "shutdown", fix WebSocket msg handling
neuweiler Jun 9, 2016
9535a27
fix description for wifi
neuweiler Jun 10, 2016
3307949
fix energy consumption calculation
neuweiler Jun 10, 2016
6473012
change logging so that messages can be pushed to WebSocket
neuweiler Jun 21, 2016
120de02
re-implement calculation of energy consumption
neuweiler Jun 21, 2016
0e992b8
add warning and error sounds to dashboard
neuweiler Jun 21, 2016
f175a00
reduce amount of safe energy state to preserve eeprom
neuweiler Jun 27, 2016
d703e5f
come clean-up
neuweiler Jun 27, 2016
44e9b34
add new info/warn/error sounds for notification
neuweiler Jun 27, 2016
5ded903
set 6 parallel sockets in default wifi config to cope with fast browsers
neuweiler Jun 27, 2016
8bac5e0
workaround to play audio on mobile devices
neuweiler Jun 28, 2016
f4309ce
clean-up a bit
neuweiler Jun 29, 2016
9a15bae
align code with GEVCU Extension
neuweiler Jun 29, 2016
4791757
make start-up of charging more resilient against old error messages
neuweiler Jul 1, 2016
169eca7
bugfix: storing power consumption no longer flushes all pages (with 1…
neuweiler Jul 1, 2016
0d45fa5
do not treat active oscillation limiter as warning
neuweiler Aug 17, 2016
31460fd
allow setting the energy consumption manually
neuweiler Aug 17, 2016
d1f3a21
add support for ABS input to set torque=0 immediately
neuweiler Sep 8, 2016
2b216a4
add ability to kill a device via console
neuweiler Sep 8, 2016
aa69c30
adjust torque/speed calculation, add support for ABS -> torque = 0
neuweiler Sep 8, 2016
8d1984c
Support multiple open sockets and ELM327 as well as WebSockets
neuweiler Sep 12, 2016
358914a
fix bugs
neuweiler Sep 15, 2016
2c7e2d3
print more error messages from devices to log
neuweiler Sep 16, 2016
8eaca81
reduce repetitive log messages in the web-gui
neuweiler Sep 17, 2016
a2cd5b7
fix wrong format descriptors in logger formatting
neuweiler Sep 17, 2016
a1e1b35
fix remaining bugs and get web dashboard working again
neuweiler Sep 17, 2016
8c25fce
send information about repeated messages only every 10sec, not every …
neuweiler Sep 18, 2016
8e330a8
send "last msg repeaded" message in info level, not message's level
neuweiler Nov 13, 2016
fdbf04c
minor improvements
neuweiler Nov 13, 2016
55aff66
add start/stop EHPS buttons, add workaround for swallowed command via…
neuweiler Nov 25, 2016
43b9f12
keep the system running if motor controller reports error (the DCDC m…
neuweiler Nov 25, 2016
5ba4365
don't apply regen if battery is too cold to accept a charge
neuweiler Nov 29, 2016
579e924
don't abort charge if batteryVoltage==0 at beginning (because it was …
neuweiler Nov 29, 2016
1ac6fd8
prevent continuous saving of charge state if 0 but DCDC increases it …
neuweiler Dec 3, 2016
5d5a00a
enhance comments
neuweiler Dec 4, 2016
22ded18
try to prevent ichip crashes
neuweiler Dec 4, 2016
af34ce6
optimize website
neuweiler Dec 4, 2016
ba73cb3
add new dashboard design
neuweiler Dec 4, 2016
6a4717e
plugin changes
neuweiler Dec 4, 2016
71146a3
fix no regen at low temperatures
neuweiler Dec 8, 2016
735fc79
enhancements
neuweiler Dec 8, 2016
094775a
optimize gauge performance by using layers, prepare for multi-dial ga…
neuweiler Dec 9, 2016
8d47024
adjust dials/gauges
neuweiler Dec 16, 2016
0109ef2
revert changes as crashes still occur
neuweiler Dec 17, 2016
33947ec
finally fix start-up issues (?)
neuweiler Dec 17, 2016
1b9b377
as a workaround the motorcontroller also switches power steering, hea…
neuweiler Dec 17, 2016
8739de8
add website config and filter to replace content of .js parameter fil…
neuweiler Dec 18, 2016
c3f9862
config change
neuweiler Dec 19, 2016
abaa951
bugfix to get min temp when charger config is loaded and noz before
neuweiler Dec 19, 2016
c50ccc9
make gauges work in dual mode
neuweiler Dec 26, 2016
9aa0462
add a 3 dial gauge for testing
neuweiler Dec 26, 2016
2c54327
first working draft of re-designed dashboard and multi-dial gauges
neuweiler Dec 28, 2016
410c142
get gradients working for arcs
neuweiler Dec 28, 2016
a383b5a
impl possibility to specify arc offset via startValue
neuweiler Dec 28, 2016
9e9609c
optimize performance by reducing string comparisons/look-ups
neuweiler Dec 29, 2016
dce7c1b
more performance tweaks
neuweiler Dec 29, 2016
e0bf65a
better fit arc colors to highlights
neuweiler Dec 30, 2016
9831b2e
nicer layout, ready for first tests
neuweiler Dec 30, 2016
07625d1
.
neuweiler Dec 30, 2016
0c71772
webservice and every dial now has its own worker (thread) which impro…
neuweiler Jan 3, 2017
166b538
use slew when regen=off or battery temp too low (no jerking)
neuweiler Jan 4, 2017
4031a68
automatically reset wifi if it does no longer respond
neuweiler Jan 4, 2017
2de118a
added firmware for 12-pin boards to operate in AP mode
neuweiler Jan 4, 2017
a0e5493
added latest firmware from ConnectOne
neuweiler Jan 4, 2017
5b15aa7
first working edition of new dashboard
neuweiler Jan 5, 2017
d6105fa
split config pages
neuweiler Jan 7, 2017
0e33252
added svg car to background
neuweiler Jan 8, 2017
e7afe30
overcome more quirks of ichip (some files can't be in sub-dir)
neuweiler Jan 8, 2017
b517f9e
at least serve creepSpeed to ichip so the control page loads
neuweiler Jan 8, 2017
7118767
fix garbeled input from websocket (due to dropped CR, LF or 0 charact…
neuweiler Jan 10, 2017
38e9f37
adjust handling of heater temperature via CAN bus
neuweiler Jan 10, 2017
ef000c1
minor fix
neuweiler Jan 10, 2017
7e0a046
ensure that also 0 values are rendered
neuweiler Jan 10, 2017
c304a24
remove duplicate prefs handling (MotorController)
neuweiler Jan 28, 2017
0872199
introduce brake hold functionality in motor controller
neuweiler Jan 28, 2017
8a1b7f2
fix websocket handling issues
neuweiler Feb 1, 2017
7a3d3fc
fix dislpay of float and heater power in webgui
neuweiler Feb 1, 2017
ef7d007
reduce severity of some log messages
neuweiler Feb 2, 2017
7195df2
fix handling of floats
neuweiler Feb 2, 2017
72e77d7
final fix for float numbers in web ui
neuweiler Feb 2, 2017
756d9b0
log incoming socket messages
neuweiler Feb 7, 2017
d35a022
prepare gear change support
neuweiler Mar 7, 2017
3900da5
prevent unnecessary writes to eeprom (prolongue live)
neuweiler Mar 11, 2017
ac8247c
increase number of supported devices/pages and improve logging
neuweiler Mar 11, 2017
6472bcf
drop unnecessary updates of SOC level
neuweiler Mar 11, 2017
41d59e2
init all values
neuweiler Mar 11, 2017
56f86d5
fix to get DIN0 and DIN2 working (prevent due_can to set pin48 to out…
neuweiler Mar 20, 2017
c86fec5
set correct pin for led on GEVCU4 board
neuweiler Mar 20, 2017
6b2003b
replace value with constant
neuweiler Mar 20, 2017
bd86e03
fix setting of ADC gain/offset on purged eeprom
neuweiler Mar 20, 2017
6c9af4e
add missing config values to serial console
neuweiler Mar 20, 2017
a0e9d5a
prevent device to register twice at can/tick handler
neuweiler Mar 20, 2017
74aef8a
fix typos
neuweiler Mar 20, 2017
b5373d7
move hardcoded values from config.h to devices
neuweiler Mar 23, 2017
62a86e6
make brakeHoldLevel change proportionally to rpm and disable slew in …
neuweiler Mar 23, 2017
006935b
reduce unnecessary traffic
neuweiler Mar 26, 2017
26d4a12
make brake hold coefficient configurable
neuweiler Mar 26, 2017
eb6c099
removed functionality with torque at highest speed = hold torque
neuweiler Mar 26, 2017
bdff040
log ratio of motor/vehicle speed
neuweiler Apr 1, 2017
500d2e2
reset the CPU at power-down to provide more remaining power to the EE…
neuweiler Apr 14, 2017
36cd33c
refactoring and reformatting, drop logging of websocket messages
neuweiler Apr 14, 2017
094caef
improve logging
neuweiler Apr 14, 2017
5369d0a
refactoring
neuweiler Apr 14, 2017
abcdddd
fix ignored incoming websocket messages
neuweiler Apr 14, 2017
a618324
bump version
neuweiler Apr 14, 2017
05bb143
fix unnecessary calls to websocket processor
neuweiler Apr 16, 2017
84a7d28
adjust comments, minor fixes
neuweiler May 22, 2017
b9245a0
add new device status indicator
neuweiler May 27, 2017
aec362b
reduce amount of updates on less important values to save power on ta…
neuweiler May 28, 2017
e2bbf67
reduce load on tablets by not animating if delta is below a threshold…
neuweiler May 28, 2017
b3bb51c
reduce load on tablets by not animating if delta is below a threshold…
neuweiler May 28, 2017
b71383e
move auto enable of heater and power steering to GEVCU SystemIO
neuweiler Jun 26, 2017
6238a75
adjust calculation of slew part, greatly enhances torque stability an…
neuweiler Jul 12, 2017
fc8a72a
fix condition where slewPart is 0 but target and requested torque are…
neuweiler Jul 16, 2017
5efa496
fix status indicator and allow setting mode via terminal
neuweiler Jul 20, 2017
07a253a
fix not starting EHPS due to wrong state information
neuweiler Jul 20, 2017
5b00edf
remove svg as ichip doesn't serve it properly
neuweiler Jul 20, 2017
938c74a
cosmetics
neuweiler Oct 2, 2017
87708f6
as only little current flows when the car is not powered on, no activ…
neuweiler Oct 2, 2017
03e9860
correctly process missing temperature data
neuweiler Oct 2, 2017
c80ae76
reduce logging, improve handling of faulted throttle/brake
neuweiler Oct 2, 2017
e3dd559
improve annunciator, move driver info to icons
neuweiler Oct 3, 2017
24e064c
reduce logging on dashboard
neuweiler Oct 4, 2017
ae8c41f
ichip doesn't provide correct image -> move to root
neuweiler Oct 4, 2017
c2bfa5d
do not unfold annunciator at torqueLimit due to low speed
neuweiler Oct 4, 2017
e042ffa
improve loading screen, revert previous move of picture (didn't work)
neuweiler Oct 4, 2017
e87efbb
improve images
neuweiler Oct 5, 2017
983bc4b
send motor speed to car bus so a filter can spoof the rpm messages
neuweiler Oct 5, 2017
43a1734
improve data transmission between GEVCU and CAN filter
neuweiler Jan 22, 2018
fda1642
add OrionBMS device, extend battery manager funcitonality
neuweiler Aug 18, 2018
c246c6a
temporary fix so it compiles
neuweiler Aug 18, 2018
26aa63f
only enable high power consumption devices when DCDC reports it's run…
neuweiler Sep 26, 2018
9459e3b
another workaround for stupid ichip sending a gif image instead of an…
neuweiler Sep 26, 2018
9352e74
refactor gauges, introduce Dial class
neuweiler Dec 14, 2018
d4c2353
Get OrionBMS working, add BMS data to website
neuweiler Dec 14, 2018
4340a04
migrate to latest plugin version
neuweiler Dec 14, 2018
45c40a1
allow to enable the heater while charging
neuweiler Dec 14, 2018
8329cd7
reformat, small refactoring
neuweiler Dec 15, 2018
1eeff3d
adjust websocket message handling
neuweiler Dec 16, 2018
67da9b2
remove inadequate energy calcs, use BMS data for SOC
neuweiler Dec 16, 2018
8f1e708
fix sending of websocket command to ichip
neuweiler Dec 17, 2018
97a2d4b
add Orion BMS as device
neuweiler Dec 17, 2018
22a0fcc
consolidate CAN ids to safe one CAN mailbox
neuweiler Feb 10, 2019
a5aae07
fix typo
neuweiler Feb 10, 2019
77af7a3
add CRC8 calc util (required by OrionBMS)
neuweiler Feb 10, 2019
75c1de1
extend charger to allow BMS to set max charge current
neuweiler Feb 10, 2019
ebad0dd
add chargeInputLevels
neuweiler Feb 12, 2019
7b595f6
make website minified, adjust js/css files to become minifiable
neuweiler Feb 12, 2019
b909e10
add heartbeat for websockets
neuweiler Feb 12, 2019
25b72aa
initially hide icons
neuweiler Feb 12, 2019
297a99d
prevent fluctuations of current by not increasing it again even if BM…
neuweiler Feb 12, 2019
3922cdb
add support for OrionBMS
neuweiler Feb 12, 2019
8ef3362
allow to set the max input current for the charger
neuweiler Feb 12, 2019
0e67b59
improve battery display
neuweiler Feb 12, 2019
055ca77
improve readability of subinfo text
neuweiler Feb 12, 2019
9d90cc4
current version with minified html/js/css
neuweiler Feb 12, 2019
65b3062
different implementation of crc8
neuweiler Feb 13, 2019
4701098
add BMS flags to annunciator
neuweiler Apr 8, 2019
b6b9d9b
use values for pack Volts/Amps from BMS if available, otherwise use m…
neuweiler Apr 8, 2019
671cb44
also process bms internal temperature
neuweiler Apr 9, 2019
cab6653
initial draft to auto-align rpm with gear shift
neuweiler Jun 30, 2019
7cdc7c2
make annunciator auto (dis-)appear
neuweiler Jul 1, 2019
69d525b
refactoring
neuweiler Jul 6, 2019
af82d58
improve readability (read faster while driving)
neuweiler Jul 6, 2019
4eb0251
escape tilde sign because of ichip processing of variables
neuweiler Jul 6, 2019
ad27056
make notifications wider after font size increase
neuweiler Jul 6, 2019
64f7fb7
better readability
neuweiler Jul 6, 2019
a7ba16c
Orion BMS configuration file (profile) working with GEVCU implementation
neuweiler Jul 6, 2019
132e6cb
clean-up
neuweiler Jul 6, 2019
713a032
smoothen the torque inversion to protect the gearbox
neuweiler Jul 6, 2019
6d7da48
add command "P" to measure the duration and voltage curve during pre-…
neuweiler Jul 6, 2019
41e87ac
fix read-out of cell temperatures (was factor 10 too low)
neuweiler Jul 6, 2019
93f987e
reduce usage of CAN mailboxes to avoid exhaustion
neuweiler Jul 7, 2019
e7006b1
add initial support for cruise control !!
neuweiler Jul 7, 2019
8a87b4c
make PID values part of MotorControllerConfig and store them to EEPROM
neuweiler Jul 7, 2019
9070e3a
simplify messages sent via websocket
neuweiler Jul 7, 2019
ddcfa2a
fix selection of chargeInputLevel during charge
neuweiler Jul 7, 2019
731a49d
improve look of current selector drop-down
neuweiler Jul 7, 2019
b96e3b3
show/hide cruise control buttons when active/inactive
neuweiler Jul 7, 2019
789c823
migrate to latest arduino plugin version
neuweiler Jul 17, 2019
9a2e3ec
reduce CPU load by using prepared messages and optimizing other parts
neuweiler Jul 17, 2019
329b804
delete ununecessary files
neuweiler Jul 17, 2019
0f26236
refactoring
neuweiler Jul 17, 2019
1d45142
add support for steering wheel cruise control buttons
neuweiler Jul 17, 2019
d2622f8
enhance cruise control
neuweiler Jul 17, 2019
ea5f260
chose softer parameters for PID to avoid bucking in low torque range …
neuweiler Jul 17, 2019
c4d3aa8
bugfix, initialize counter
neuweiler Jul 17, 2019
479264c
re-packed
neuweiler Jul 20, 2019
29c7a9f
add support to shut-down the charger
neuweiler Aug 5, 2019
e6ff51c
add gear-change support
neuweiler Aug 5, 2019
28efcef
reduce output-power for status indicator to prevent burn-out of 12Vle…
neuweiler Aug 5, 2019
497aea9
add support for external charge current control (by solar inverter)
neuweiler Aug 5, 2019
29d6822
set input current, not output current based on solar current
neuweiler Aug 6, 2019
ff08b24
increase power to adjust rpm
neuweiler Aug 6, 2019
e973fe2
major refactoring to eliminate many compiler warnings
neuweiler Apr 11, 2020
2dc25c7
add wifi device ESP32
neuweiler Apr 11, 2020
0310e02
bump version
neuweiler Apr 11, 2020
cbf01bb
Update
neuweiler Apr 11, 2020
7391080
first running spike with GEVCU-ESP32
neuweiler Apr 13, 2020
cc1efc6
add missing config parameters
neuweiler Apr 13, 2020
0112203
allow ESP32 to reload config params
neuweiler Apr 13, 2020
8ee6e6f
fix bitshifting
neuweiler Apr 15, 2020
7694651
move carType from throttle to system
neuweiler Apr 16, 2020
2f0d420
small bug fixes
neuweiler Apr 18, 2020
bf3a82a
get things with ESP32 up and running :)
neuweiler Apr 20, 2020
d521ea0
add support for limits
neuweiler May 19, 2020
84f38d1
with high SOC disable regen to prevent oscillation
neuweiler May 19, 2020
178fd69
set torque to 0 directly to prevent shaking, not via dcCurrentLimigRe…
neuweiler May 23, 2020
4d6506b
fix minor glitches in UI
neuweiler May 23, 2020
b94e67c
fix glitches in value display/update
neuweiler May 23, 2020
dde92a4
add torqueAvailable to wifi data (to display in gauges)
neuweiler May 23, 2020
daf8995
check for negative torque in the right place
neuweiler Jun 15, 2020
da01e42
reset esp32 if no heart beat received
neuweiler Aug 3, 2020
0fb3e0f
add log history
neuweiler Aug 5, 2020
2ae432e
correctly handle external changes to maxInputCurrent (don't change co…
neuweiler Aug 7, 2020
8daf137
support input current limitation on input voltage drop to protect fro…
neuweiler Aug 7, 2020
cafd15c
fix logging + comments
neuweiler Aug 9, 2020
aad2e47
fix bug in eeprom mapping
neuweiler Aug 16, 2020
640550f
new param: slew rate regen
Oct 17, 2020
d674aee
fix bug when BMS is not ready at start of charging
Oct 17, 2020
603a59b
making GEVCU a bit less chatty on the UI
Oct 17, 2020
81ad53b
add pack ampHours, prepare for correct charge time calculation
Oct 22, 2020
53353dc
adjust BMS settings to new code
Oct 23, 2020
d7f645b
calculate remaining time to fully charge based on BMS data
Oct 24, 2020
48f2302
buffer outgoing serial data to prevent CAN timeouts
Jun 14, 2021
457e9b7
improve manual/solar override of charger input current
Aug 7, 2021
ebd0476
bump version
Aug 7, 2021
7ebb3d1
adjust to new plugin-version
neuweiler Jul 31, 2022
ac776d1
use fast-charger-relay for heater instead - just a test
neuweiler Jul 31, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 46 additions & 35 deletions .cproject
Original file line number Diff line number Diff line change
@@ -1,65 +1,76 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="it.baeyens.arduino.core.toolChain.release.686383860">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="it.baeyens.arduino.core.toolChain.release.686383860" moduleId="org.eclipse.cdt.core.settings" name="Release">
<cconfiguration id="io.sloeber.core.toolChain.release.1108340858">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="io.sloeber.core.toolChain.release.1108340858" moduleId="org.eclipse.cdt.core.settings" name="Release">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildProperties="" description="" id="it.baeyens.arduino.core.toolChain.release.686383860" name="Release" parent="org.eclipse.cdt.build.core.emptycfg">
<folderInfo id="it.baeyens.arduino.core.toolChain.release.686383860.1331670802" name="/" resourcePath="">
<toolChain id="it.baeyens.arduino.core.toolChain.release.683921793" name="it.baeyens.arduino.core.toolChain.release" superClass="it.baeyens.arduino.core.toolChain.release">
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="it.baeyens.arduino.targetplatform.451122131" name="Arduino Target" osList="all" superClass="it.baeyens.arduino.targetplatform"/>
<builder buildPath="${workspace_loc:/GEVCU}/Release" id="it.baeyens.arduino.sketch.builder.1443488479" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Arduino sketch builder" superClass="it.baeyens.arduino.sketch.builder"/>
<tool id="it.baeyens.arduino.tool.sketch.compiler.cpp.617097869" name="Arduino C++ Compiler" superClass="it.baeyens.arduino.tool.sketch.compiler.cpp">
<option id="it.baeyens.arduino.compiler.cpp.sketch.option.incpath.647762845" name="Include Paths (-I)" superClass="it.baeyens.arduino.compiler.cpp.sketch.option.incpath" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/arduino/core}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/arduino/variant}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/Libraries/due_can}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/Libraries/due_rtc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/Libraries/due_wire}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/Libraries/DueTimer}&quot;"/>
<configuration artifactName="${ProjName}" buildProperties="" description="" id="io.sloeber.core.toolChain.release.1108340858" name="Release" parent="org.eclipse.cdt.build.core.emptycfg">
<folderInfo id="io.sloeber.core.toolChain.release.1108340858.1215992724" name="/" resourcePath="">
<toolChain id="io.sloeber.core.toolChain.release.1690617875" name="Arduino Toolchain (Sloeber edition)" superClass="io.sloeber.core.toolChain.release">
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="io.sloeber.targetplatform.1292187849" name="Arduino Target" osList="all" superClass="io.sloeber.targetplatform"/>
<builder buildPath="${workspace_loc:/GEVCU}/Release" id="io.sloeber.sketch.builder.1294486331" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Arduino sketch builder" superClass="io.sloeber.sketch.builder"/>
<tool id="io.sloeber.tool.sketch.compiler.cpp.1019503325" name="Arduino C++ Compiler" superClass="io.sloeber.tool.sketch.compiler.cpp">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="io.sloeber.compiler.cpp.sketch.option.incpath.1058103948" name="Include Paths (-I)" superClass="io.sloeber.compiler.cpp.sketch.option.incpath" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/core/core}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/core/variant}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/libraries/DueTimer}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/libraries/due_wire}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/libraries/PID}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/libraries/due_can}&quot;"/>
</option>
<inputType id="io.sloeber.compiler.cpp.sketch.input.1650738002" name="CPP source files" superClass="io.sloeber.compiler.cpp.sketch.input"/>
</tool>
<tool id="io.sloeber.tool.compiler.c.332287823" name="Arduino C Compiler" superClass="io.sloeber.tool.compiler.c">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="io.sloeber.compiler.c.sketch.option.incpath.351409332" name="Include Paths (-I)" superClass="io.sloeber.compiler.c.sketch.option.incpath" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/core/core}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/core/variant}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/libraries/DueTimer}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/libraries/due_wire}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/libraries/PID}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/libraries/due_can}&quot;"/>
</option>
<inputType id="it.baeyens.arduino.compiler.cpp.sketch.input.1752728858" name="CPP source files" superClass="it.baeyens.arduino.compiler.cpp.sketch.input"/>
<inputType id="io.sloeber.compiler.c.sketch.input.1061308427" name="C Source Files" superClass="io.sloeber.compiler.c.sketch.input"/>
</tool>
<tool id="it.baeyens.arduino.tool.compiler.c.252675023" name="Arduino C Compiler" superClass="it.baeyens.arduino.tool.compiler.c">
<option id="it.baeyens.arduino.compiler.c.sketch.option.incpath.1237971842" name="Include Paths (-I)" superClass="it.baeyens.arduino.compiler.c.sketch.option.incpath" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/arduino/core}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/arduino/variant}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/Libraries/due_can}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/Libraries/due_rtc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/Libraries/due_wire}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/Libraries/DueTimer}&quot;"/>
<tool id="io.sloeber.tool.sketch.compiler.s.2011424326" name="Arduino Assembler" superClass="io.sloeber.tool.sketch.compiler.s">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="io.sloeber.compiler.asm.sketch.option.incpath.288441820" name="Include Paths (-I)" superClass="io.sloeber.compiler.asm.sketch.option.incpath" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/core/core}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/core/variant}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/libraries/DueTimer}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/libraries/due_wire}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/libraries/PID}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/GEVCU/libraries/due_can}&quot;"/>
</option>
<inputType id="it.baeyens.arduino.compiler.c.sketch.input.95460254" name="C Source Files" superClass="it.baeyens.arduino.compiler.c.sketch.input"/>
<inputType id="io.sloeber.compiler.S.sketch.input.2035241542" name="Assembly source files" superClass="io.sloeber.compiler.S.sketch.input"/>
</tool>
<tool id="it.baeyens.arduino.tool.ar.1763061105" name="Arduino archiver" superClass="it.baeyens.arduino.tool.ar"/>
<tool id="it.baeyens.arduino.tool.combine.1670433114" name="Arduino combiner" superClass="it.baeyens.arduino.tool.combine"/>
<tool id="it.baeyens.arduino.tool.objcopy.eep.1229462495" name="Arduino tool Create eeprom" superClass="it.baeyens.arduino.tool.objcopy.eep"/>
<tool id="it.baeyens.arduino.tool.objcopy.flash.113633736" name="Arduino tool Create hex" superClass="it.baeyens.arduino.tool.objcopy.flash"/>
<tool id="it.baeyens.arduino.tool.size.721515839" name="Arduino tool Print Size" superClass="it.baeyens.arduino.tool.size"/>
<tool id="io.sloeber.tool.ar.1027879069" name="Arduino archiver" superClass="io.sloeber.tool.ar"/>
<tool id="io.sloeber.tool.combine.1487814300" name="Arduino combiner" superClass="io.sloeber.tool.combine"/>
<tool id="io.sloeber.tool.objcopy.eep.1898812434" name="Arduino tool objcopy command" superClass="io.sloeber.tool.objcopy.eep"/>
<tool id="io.sloeber.tool.size.846078291" name="Arduino tool Print Size" superClass="io.sloeber.tool.size"/>
</toolChain>
</folderInfo>
<sourceEntries>
<entry excluding="Libraries/*/?xamples" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name=""/>
<entry excluding="libraries/DueTimer/arduino|libraries/DueTimer/.settings|libraries/DueTimer/.git|libraries/due_can/.git|libraries/due_wire/.git|libraries/due_wire/.settings|libraries/due_wire/arduino|libraries/due_wire/Release|libraries/?*/**/?xamples/**|libraries/?*/**/?xtras/**|libraries/?*/**/test*/**|libraries/?*/**/third-party/**|libraries/**/._*|libraries/?*/utility/*/*" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name=""/>
</sourceEntries>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="GEVCU.null.1082903783" name="GEVCU"/>
<project id="GEVCU.null.1943897010" name="GEVCU"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
<storageModule moduleId="refreshScope"/>
</cproject>
</cproject>
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
bin/
bin-debug/
bin-release/
.ino.cpp
website/minified

# Other files and folders
.settings/
Expand All @@ -21,3 +23,4 @@ Release
*.map
*.srec
*.vcx*
/sloeber.ino.cpp
74 changes: 0 additions & 74 deletions .project.copy

This file was deleted.

15 changes: 15 additions & 0 deletions .sproject
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
Config.Release.board.BOARD.ID=arduino_due_x
Config.Release.board.BOARD.TXT=${SLOEBER_HOME}/arduinoPlugin/packages/arduino/hardware/sam/1.6.12/boards.txt
Config.Release.board.PROGRAMMER.NAME=Default
Config.Release.board.UPLOAD.PORT=/dev/cu.usbmodem14101
Config.Release.compile.sloeber.extra.all=
Config.Release.compile.sloeber.extra.archive=
Config.Release.compile.sloeber.extra.assembly=
Config.Release.compile.sloeber.extra.c.compile=
Config.Release.compile.sloeber.extra.compile=
Config.Release.compile.sloeber.extra.cpp.compile=
Config.Release.compile.sloeber.extra.link=
Config.Release.compile.sloeber.size.switch=false
Config.Release.compile.sloeber.warning_level=ALL
Config.Release.compile.sloeber.warning_level.custom=
Config.Release.other.IS_VERSION_CONTROLLED=false
136 changes: 136 additions & 0 deletions Base64.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
#include "Base64.h"

const char b64_alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
"0123456789+/";

/* 'Private' declarations */
inline void a3_to_a4(unsigned char * a4, unsigned char * a3);
//inline void a4_to_a3(unsigned char * a3, unsigned char * a4);
//inline unsigned char b64_lookup(char c);

int base64_encode(char *output, char *input, int inputLen) {
int i = 0, j = 0;
int encLen = 0;
unsigned char a3[3];
unsigned char a4[4];

while(inputLen--) {
a3[i++] = *(input++);
if(i == 3) {
a3_to_a4(a4, a3);

for(i = 0; i < 4; i++) {
output[encLen++] = b64_alphabet[a4[i]];
}

i = 0;
}
}

if(i) {
for(j = i; j < 3; j++) {
a3[j] = '\0';
}

a3_to_a4(a4, a3);

for(j = 0; j < i + 1; j++) {
output[encLen++] = b64_alphabet[a4[j]];
}

while((i++ < 3)) {
output[encLen++] = '=';
}
}
output[encLen] = '\0';
return encLen;
}

/* not needed yet.. commented out in order not to bloat the binary
int base64_decode(char * output, char * input, int inputLen) {
int i = 0, j = 0;
int decLen = 0;
unsigned char a3[3];
unsigned char a4[4];


while (inputLen--) {
if(*input == '=') {
break;
}

a4[i++] = *(input++);
if (i == 4) {
for (i = 0; i <4; i++) {
a4[i] = b64_lookup(a4[i]);
}

a4_to_a3(a3,a4);

for (i = 0; i < 3; i++) {
output[decLen++] = a3[i];
}
i = 0;
}
}

if (i) {
for (j = i; j < 4; j++) {
a4[j] = '\0';
}

for (j = 0; j <4; j++) {
a4[j] = b64_lookup(a4[j]);
}

a4_to_a3(a3,a4);

for (j = 0; j < i - 1; j++) {
output[decLen++] = a3[j];
}
}
output[decLen] = '\0';
return decLen;
}

int base64_enc_len(int plainLen) {
int n = plainLen;
return (n + 2 - ((n + 2) % 3)) / 3 * 4;
}

int base64_dec_len(char * input, int inputLen) {
int i = 0;
int numEq = 0;
for(i = inputLen - 1; input[i] == '='; i--) {
numEq++;
}

return ((6 * inputLen) / 8) - numEq;
}
*/
inline void a3_to_a4(unsigned char * a4, unsigned char * a3) {
a4[0] = (a3[0] & 0xfc) >> 2;
a4[1] = ((a3[0] & 0x03) << 4) + ((a3[1] & 0xf0) >> 4);
a4[2] = ((a3[1] & 0x0f) << 2) + ((a3[2] & 0xc0) >> 6);
a4[3] = (a3[2] & 0x3f);
}
/*
inline void a4_to_a3(unsigned char * a3, unsigned char * a4) {
a3[0] = (a4[0] << 2) + ((a4[1] & 0x30) >> 4);
a3[1] = ((a4[1] & 0xf) << 4) + ((a4[2] & 0x3c) >> 2);
a3[2] = ((a4[2] & 0x3) << 6) + a4[3];
}

inline unsigned char b64_lookup(char c) {
int i;
for(i = 0; i < 64; i++) {
if(b64_alphabet[i] == c) {
return i;
}
}

return -1;
}
*/

Loading