From 719c3ecb16b3aa070fdf99326365ec3d754df60b Mon Sep 17 00:00:00 2001 From: atomega Date: Mon, 15 Mar 2021 21:36:15 +0000 Subject: [PATCH] Made some structural re-organization --- developpment/{interfacer => }/Makefile | 3 +- developpment/algorithms/bitgestion.c | 509 ++++++++++++++++++ developpment/algorithms/bitgestion.h | 44 ++ .../{interfacer => drivers/bh1750}/bh1750.cpp | 0 .../{interfacer => drivers/bh1750}/bh1750.h | 2 +- developpment/drivers/bh1750/bh1750.o | Bin 0 -> 3968 bytes .../{interfacer => drivers/bh1750}/bh1750.py | 0 developpment/{interfacer => }/interfacer.cpp | 8 +- developpment/interfacer.o | Bin 0 -> 25368 bytes developpment/interfacer/$ | 13 - .../commandManager.cpp | 0 .../commandManager.h | 0 developpment/management/commandManager.o | Bin 0 -> 23436 bytes .../errorHandling.cpp | 0 .../errorHandling.h | 0 developpment/management/errorHandling.o | Bin 0 -> 7116 bytes .../{interfacer => periferals/i2c}/i2c.hpp | 0 .../i2c}/i2c_ch0_pImpL.cpp | 1 - .../i2c}/i2c_ch0_pImpL.h | 3 +- developpment/periferals/i2c/i2c_ch0_pImpL.o | Bin 0 -> 5288 bytes .../i2c}/i2c_ch1_pImpL.cpp | 1 - .../i2c}/i2c_ch1_pImpL.hpp | 3 +- developpment/periferals/i2c/i2c_ch1_pImpL.o | Bin 0 -> 5288 bytes .../i2c}/i2c_driver.cpp | 1 - .../i2c}/i2c_driver.h | 3 +- developpment/periferals/i2c/i2c_driver.o | Bin 0 -> 5280 bytes developpment/runtest | Bin 0 -> 47544 bytes .../{interfacer => systems}/systemCall.cpp | 0 .../{interfacer => systems}/systemCall.h | 0 developpment/systems/systemCall.o | Bin 0 -> 27828 bytes 30 files changed, 566 insertions(+), 25 deletions(-) rename developpment/{interfacer => }/Makefile (69%) create mode 100755 developpment/algorithms/bitgestion.c create mode 100755 developpment/algorithms/bitgestion.h rename developpment/{interfacer => drivers/bh1750}/bh1750.cpp (100%) rename developpment/{interfacer => drivers/bh1750}/bh1750.h (96%) create mode 100644 developpment/drivers/bh1750/bh1750.o rename developpment/{interfacer => drivers/bh1750}/bh1750.py (100%) rename developpment/{interfacer => }/interfacer.cpp (87%) create mode 100644 developpment/interfacer.o delete mode 100644 developpment/interfacer/$ rename developpment/{interfacer => management}/commandManager.cpp (100%) rename developpment/{interfacer => management}/commandManager.h (100%) create mode 100644 developpment/management/commandManager.o rename developpment/{interfacer => management}/errorHandling.cpp (100%) rename developpment/{interfacer => management}/errorHandling.h (100%) create mode 100644 developpment/management/errorHandling.o rename developpment/{interfacer => periferals/i2c}/i2c.hpp (100%) rename developpment/{interfacer => periferals/i2c}/i2c_ch0_pImpL.cpp (99%) rename developpment/{interfacer => periferals/i2c}/i2c_ch0_pImpL.h (89%) create mode 100644 developpment/periferals/i2c/i2c_ch0_pImpL.o rename developpment/{interfacer => periferals/i2c}/i2c_ch1_pImpL.cpp (99%) rename developpment/{interfacer => periferals/i2c}/i2c_ch1_pImpL.hpp (89%) create mode 100644 developpment/periferals/i2c/i2c_ch1_pImpL.o rename developpment/{interfacer => periferals/i2c}/i2c_driver.cpp (99%) rename developpment/{interfacer => periferals/i2c}/i2c_driver.h (88%) create mode 100644 developpment/periferals/i2c/i2c_driver.o create mode 100755 developpment/runtest rename developpment/{interfacer => systems}/systemCall.cpp (100%) rename developpment/{interfacer => systems}/systemCall.h (100%) create mode 100644 developpment/systems/systemCall.o diff --git a/developpment/interfacer/Makefile b/developpment/Makefile similarity index 69% rename from developpment/interfacer/Makefile rename to developpment/Makefile index 523dbd7..9849f39 100644 --- a/developpment/interfacer/Makefile +++ b/developpment/Makefile @@ -1,4 +1,5 @@ -cpp_src = $(wildcard *.cpp) +cpp_src = $(wildcard *.cpp) $(wildcard ./drivers/bh1750/*.cpp) $(wildcard ./management/*.cpp) $(wildcard ./systems/*.cpp) $(wildcard ./periferals/i2c/*.cpp) + #c_src = $(wildcard ../c/algorithms/*.c) $(wildcard driver/ma120x0/*.c) cpp_obj = $(cpp_src:.cpp=.o) diff --git a/developpment/algorithms/bitgestion.c b/developpment/algorithms/bitgestion.c new file mode 100755 index 0000000..525346c --- /dev/null +++ b/developpment/algorithms/bitgestion.c @@ -0,0 +1,509 @@ +#include "../main.h" +#include"bitgestion.h" + +//SET N th bit to one + + +void throwError( uint16_t error) +{ + printf("\n\rAglorithm.c : An Error has been generated on line : >>%d<<\n\r",error); +} + + +void set_nth_bit_uint8( uint8_t *value, uint8_t &n) +{ + if (n < 8 && n >=0) + { + *value|= 1 << n; + } + else + { + throwError(__LINE__); + } +} + +void set_nth_bit_int8( int8_t *value, uint8_t &n) +{ + if (n < 8 && n >=0) + { + *value|= 1 << n; + } + else + { + throwError(__LINE__); + } +} + +void set_nth_bit_uint16( uint16_t *value, uint8_t &n) +{ + if (n < 16 && n >=0) + { + *value|= 1 << n; + } + else + { + throwError(__LINE__); + } +} + +void set_nth_bit_int16( int16_t *value, uint8_t &n) +{ + if (n < 16 && n >=0) + { + *value|= 1 << n; + } + else + { + throwError(__LINE__); + } +} + +//SET N th bit to 0 +void unset_nth_bit_uint8( uint8_t *value, uint8_t &n) +{ + if (n < 8 && n >=0) + { + *value&=~(1 << n); + } + else + { + throwError(__LINE__); + } +} + +void unset_nth_bit_int8( int8_t *value, uint8_t &n) +{ + if (n < 8 && n >=0) + { + *value&=~(1 << n); + } + else + { + throwError(__LINE__); + } +} + +void unset_nth_bit_uint16( uint16_t *value, uint8_t &n) +{ + if (n < 16 && n >=0) + { + *value&=~(1 << n); + } + else + { + throwError(__LINE__); + } +} + +void unset_nth_bit_int16( int16_t *value, uint8_t &n) +{ + if (n < 16 && n >=0) + { + *value&=~(1 << n); + } + else + { + throwError(__LINE__); + } +} + +//Toggle N th bit +void toggle_nth_bit_uint8( uint8_t *value, uint8_t &n) +{ + if (n < 8 && n >=0) + { + *value^= 1 << n; + } + else + { + throwError(__LINE__); + } +} + +void toggle_nth_bit_int8( int8_t *value, uint8_t &n) +{ + if (n < 8 && n >=0) + { + *value^= 1 << n; + } + else + { + throwError(__LINE__); + } +} + +void toggle_nth_bit_uint16( uint16_t *value, uint8_t &n) +{ + if (n < 16 && n >=0) + { + *value^= 1 << n; + } + else + { + throwError(__LINE__); + } +} + +void toggle_nth_bit_int16( int16_t *value, uint8_t &n) +{ + if (n < 16 && n >=0) + { + *value^= 1 << n; + } + else + { + throwError(__LINE__); + } +} + +//Get N th bit +void get_nth_bit_uint8( uint8_t *value, uint8_t &n) +{ + if (n < 8 && n >=0) + { + *value= (*value>> n) & 1; + } + else + { + throwError(__LINE__); + } +} + +void get_nth_bit_int8( int8_t *value, uint8_t &n) +{ + if (n < 8 && n >=0) + { + *value= (*value>> n) & 1; + } + else + { + throwError(__LINE__); + } +} + +void get_nth_bit_uint16( uint16_t *value, uint8_t &n) +{ + if (n < 16 && n >=0) + { + *value= (*value>> n) & 1; + } + else + { + throwError(__LINE__); + } +} + +void get_nth_bit_int16( int16_t *value, uint8_t &n) +{ + if (n < 16 && n >=0) + { + *value= (*value>> n) & 1; + } + else + { + throwError(__LINE__); + } +} + + + +//Change N th bit to x +//number = (number & ~(1UL << n)) | (x << n); + +void change_nth_bit_to_x_uint8( uint8_t *value, uint8_t &n, uint8_t &x) +{ + if (n < 8 && n >=0) + { + *value= (*value& ~(1 << n)) | (x << n); + } + else + { + throwError(__LINE__); + } +} + +void change_nth_bit_to_x_int8( int8_t *value, uint8_t &n, uint8_t &x) +{ + if (n < 8 && n >=0) + { + *value= (*value& ~(1 << n)) | (x << n); + } + else + { + throwError(__LINE__); + } +} + +void change_nth_bit_to_x_uint16( uint16_t *value, uint8_t &n, uint8_t &x) +{ + if (n < 16 && n >=0) + { + *value= (*value& ~(1 << n)) | (x << n); + } + else + { + throwError(__LINE__); + } +} + +void change_nth_bit_to_x_int16( int16_t *value, uint8_t &n, uint8_t &x) +{ + if (n < 16 && n >=0) + { + *value= (*value& ~(1 << n)) | (x << n); + } + else + { + throwError(__LINE__); + } +} + + + + +//GET N numer of least significant bits +void get_n_bits_lsb_uint8( uint8_t *value, uint8_t &bits) +{ + if (bits < 8 && bits >=0) + { + *value= *value& ((1 << bits)-1); + } + else + { + throwError(__LINE__); + } +} + +void get_n_bits_lsb_int8(int8_t *value, uint8_t &bits) +{ + if (bits < 8 && bits >=0) + { + *value= *value& ((1 << bits)-1); + } + else + { + throwError(__LINE__); + } +} + +void get_n_bits_lsb_uint16( uint16_t *value, uint8_t &bits) +{ + if (bits < 8 && bits >=0) + { + *value= *value& ((1 << bits)-1); + } + else + { + throwError(__LINE__); + } +} + +void get_n_bits_lsb_int16( int16_t *value, uint8_t &bits) +{ + if (bits < 16 && bits >=0) + { + *value= *value& ((1 << bits)-1); + } + else + { + throwError(__LINE__); + } +} + + +//Get N number of most signigiant bit. +void get_n_bits_msb_uint8( uint8_t *value, uint8_t &bits) +{ + if (bits < 8 && bits >=0) + { + *value= *value>> (8-bits); + } + else + { + throwError(__LINE__); + } +} + +void get_n_bits_msb_int8(int8_t *value, uint8_t &bits) +{ + if (bits < 8 && bits >=0) + { + *value= *value>> (8-bits); + } + else + { + throwError(__LINE__); + } +} + +void get_n_bits_msb_uint16( uint16_t *value, uint8_t &bits) +{ + if (bits < 16 && bits >=0) + { + *value= *value>> (16-bits); + } + else + { + throwError(__LINE__); + } +} + +void get_n_bits_msb_int16( int16_t *value, uint8_t &bits) +{ + if (bits < 16 && bits >=0) + { + *value= *value>> (16-bits); + } + else + { + throwError(__LINE__); + } +} + +// Get Bits range from startBit to stopBit and *value= them shifted. +void get_bits_range_uint8( uint8_t *value, uint8_t &startBit, uint8_t &stopBit) +{ + if (startBit < 8 && startBit >=0) + { + if(stopBit < 8 && stopBit >=0) + { + if(startBit < stopBit) + { + uint8_t mask = 0; + uint8_t i = 0; + for(i = startBit; i < stopBit; i++ ) + { + mask |= (1 << i); + } + *value= ((*value& mask) >> startBit); + } + } + } + else + { + throwError(__LINE__); + } +} + +void get_bits_range_int8( int8_t *value, uint8_t &startBit, uint8_t &stopBit) +{ + if (startBit < 8 && startBit >=0) + { + if(stopBit < 8 && stopBit >=0) + { + if(startBit < stopBit) + { + uint8_t mask = 0; + uint8_t i = 0; + for(i = startBit; i < stopBit; i++ ) + { + mask |= (1 << i); + } + *value= (*value& mask) >> startBit; + } + } + } + else + { + throwError(__LINE__); + } +} + +void get_bits_range_uint16( uint16_t *value, uint8_t &startBit, uint8_t &stopBit) +{ + if (startBit < 16 && startBit >=0) + { + if(stopBit < 16 && stopBit >=0) + { + if(startBit < stopBit) + { + uint8_t mask = 0; + uint8_t i = 0; + for(i = startBit; i < stopBit; i++ ) + { + mask |= (1 << i); + } + *value= (*value& mask) >> startBit; + } + } + } + else + { + throwError(__LINE__); + } +} + + + +void get_bits_range_int16( int16_t *value, uint8_t &startBit, uint8_t &stopBit) +{ + if (startBit < 16 && startBit >=0) + { + if(stopBit < 16 && stopBit >=0) + { + if(startBit < stopBit) + { + uint8_t mask = 0; + uint8_t i = 0; + for(i = startBit; i < stopBit; i++ ) + { + mask |= (1 << i); + } + *value= (*value& mask) >> startBit; + } + } + } + else + { + throwError(__LINE__); + } +} + + +void set_bits_range_uint8(uint8_t *value, uint8_t &startBit, uint8_t &stopBit, uint8_t &replace) +{ + if (startBit < 8 && startBit >=0) + { + if(stopBit < 8 && stopBit >=0) + { + if(startBit < stopBit) + { + uint8_t mask = 0; + uint8_t i = 0; + for(i = startBit; i < stopBit; i++ ) + { + mask |= (1 << i); + } + *value= (*value & ~mask) | replace << startBit; + } + } + } + else + { + throwError(__LINE__); + } +} + +void set_bits_range_uint16(uint16_t *value, uint8_t &startBit, uint8_t &stopBit, uint16_t &replace) +{ + if (startBit < 16 && startBit >=0) + { + if(stopBit < 16 && stopBit >=0) + { + if(startBit < stopBit) + { + uint8_t mask = 0; + uint8_t i = 0; + for(i = startBit; i < stopBit; i++ ) + { + mask |= (1 << i); + } + *value= (*value & ~mask) | replace << startBit; + } + } + } + else + { + throwError(__LINE__); + } +} diff --git a/developpment/algorithms/bitgestion.h b/developpment/algorithms/bitgestion.h new file mode 100755 index 0000000..0d49ec9 --- /dev/null +++ b/developpment/algorithms/bitgestion.h @@ -0,0 +1,44 @@ +void set_bits_range_uint16(uint16_t *value, uint8_t &startBit, uint8_t &stopBit, uint16_t &replace); +void set_bits_range_uint8(uint8_t *value, uint8_t &startBit, uint8_t &stopBit, uint8_t &replace); + +void throwError( uint16_t error); + +void set_nth_bit_uint8( uint8_t *value, uint8_t &n); +void set_nth_bit_int8( int8_t *value, uint8_t &n); +void set_nth_bit_uint16( uint16_t *value, uint8_t &n); +void set_nth_bit_int16( int16_t *value, uint8_t &n); + +void unset_nth_bit_uint8( uint8_t *value, uint8_t &n); +void unset_nth_bit_int8( int8_t *value, uint8_t &n); +void unset_nth_bit_uint16( uint16_t *value, uint8_t &n); +void unset_nth_bit_int16( int16_t *value, uint8_t &n); + +void toggle_nth_bit_uint8( uint8_t *value, uint8_t &n); +void toggle_nth_bit_int8( int8_t *value, uint8_t &n); +void toggle_nth_bit_uint16( uint16_t *value, uint8_t &n); +void toggle_nth_bit_int16( int16_t *value, uint8_t &n); + +void get_nth_bit_uint8( uint8_t *value, uint8_t &n); +void get_nth_bit_int8( int8_t *value, uint8_t &n); +void get_nth_bit_uint16( uint16_t *value, uint8_t &n); +void get_nth_bit_int16( int16_t *value, uint8_t &n); + +void change_nth_bit_to_x_uint8( uint8_t *value, uint8_t &n, uint8_t &x); +void change_nth_bit_to_x_int8( int8_t *value, uint8_t &n, uint8_t &x); +void change_nth_bit_to_x_uint16( uint16_t *value, uint8_t &n, uint8_t &x); +void change_nth_bit_to_x_int16( int16_t *value, uint8_t &n, uint8_t &x); + +void get_n_bits_lsb_uint8( uint8_t *value, uint8_t &bits); +void get_n_bits_lsb_int8(int8_t *value, uint8_t &bits); +void get_n_bits_lsb_uint16( uint16_t *value, uint8_t &bits); +void get_n_bits_lsb_int16( int16_t *value, uint8_t &bits); + +void get_n_bits_msb_uint8( uint8_t *value, uint8_t &bits); +void get_n_bits_msb_int8(int8_t *value, uint8_t &bits); +void get_n_bits_msb_uint16( uint16_t *value, uint8_t &bits); +void get_n_bits_msb_int16( int16_t *value, uint8_t &bits); + +void get_bits_range_uint8( uint8_t *value, uint8_t &startBit, uint8_t &stopBit); +void get_bits_range_int8( int8_t *value, uint8_t &startBit, uint8_t &stopBit); +void get_bits_range_uint16( uint16_t *value, uint8_t &startBit, uint8_t &stopBit); +void get_bits_range_int16( int16_t *value, uint8_t &startBit, uint8_t &stopBit); diff --git a/developpment/interfacer/bh1750.cpp b/developpment/drivers/bh1750/bh1750.cpp similarity index 100% rename from developpment/interfacer/bh1750.cpp rename to developpment/drivers/bh1750/bh1750.cpp diff --git a/developpment/interfacer/bh1750.h b/developpment/drivers/bh1750/bh1750.h similarity index 96% rename from developpment/interfacer/bh1750.h rename to developpment/drivers/bh1750/bh1750.h index b02bcc4..043dbac 100644 --- a/developpment/interfacer/bh1750.h +++ b/developpment/drivers/bh1750/bh1750.h @@ -5,7 +5,7 @@ #include #include #include -#include "i2c_ch1_pImpL.hpp" +#include "../../periferals/i2c/i2c_ch1_pImpL.hpp" //Start measurement at 4lx resolution. Time typically 16ms. diff --git a/developpment/drivers/bh1750/bh1750.o b/developpment/drivers/bh1750/bh1750.o new file mode 100644 index 0000000000000000000000000000000000000000..44efbf216387b6b9e91ef441b2bf868aa7e0fc61 GIT binary patch literal 3968 zcmc&$TWB0*6h5<;G`*;s8nw1jSB(;@-R?HqG%12@(`^k&y=1GReVES9j@==fon>a$ zCicNvv=l_B;Dg|$dGs+af)5G>3s&$U4}#)b(yn)d;)4ic{JyztCWAsn!4v+R^Zn=Y zpL71p>)7kMQ;H6|{ zZZRVl+JCI9d`}(Yq!z}Pz2QsdVl%)V;6o*pE|qz@u^>zyG6b$ zW-hdg5xWO~*)#S}k-016CpOG4hdmth=$D7sOMfT5u1b7=!a5SDXY*gwlZn*R6RGFM z|FNEYP>RQ5=cG5Yv7NygRgm8e=yxyVec21`gp?OI0uKj0EMks59SCseTm^g57tBlK zT&}F3ebKck2kUnu7Wd&xo@bn4+LEGotXVfS$H+Q{QPn^UamZCE$`8nvMZ~%$0^T#b)Qo*0v)4r(Ed0$?qpz}mKJ38F^qQx@+w8EVZL3fDo9CL7t7DbZpTWA z>AQsSxpzMK`VT^gEU3R2!OShyNyFE3uYL0U-;ZGW^9)4w=Mt-!dY%oR6nQzor@<3g zpX+VvY>U5MHiF-Sp13b!KOE6xxAFF?TM@JzU(5Y$zz}%0}{t)oR2!0xv{pPxi*MJ-n)8CiH2nx(ysv*;qSPbYw9Yan_As`9>{8_TBC}{eh$QW z(-iga#G?oHPr#*BQO8tsm(FyC4tS-E?kYVOg@rY6w^KKarax5}gr}<43Tks~x;Zg& z(l%Y=z^rSOCdX^#f-0)&y?kn`aneK@=#kpA3z6W(liHNAHok2*hP!5J555g$d>TqM zdd3zVwhgWNlx0^tYhnlL&RE$k6!e;AtFEn?t}~{WN|TrytY{8;WT791Ha(^vRZHdF z>SN97_k;et zNAz!!!+(Yx{^!Bz|2jGR-ynzoTjcQn47_hhAOOao6!CCh*beCC5i-3;AB? z$PtgU9k$&OF8BN2qV3oFZw2+e)C2PyPt13hI2+*p01pKCfdHcv&mO6G983~-;9t&} zop!YfxNG~o7D~2J&tVr`$yGI1lU&7dBxhSb*gttB2OT|W=R>nP<3nCzTy4yy>-+-fCoG%rVqBqBicP4$Yh}% z^N!kGhTVgIVRzWKYn};oDFoQ(&v`RpyiuTNy`SOp*~A>{U57zC*83y|=dhed2cZaK zaDp<&Bt|seLHrn?KYck*8{!HE>tNlahoR{AMejd#98&@JCh@P%01=`M=@bTXW9lB! z4p*{6p&fbHV=CW*-8>xmn~+zE;WHS_HLMk)Od#oZB939ap12+AeT5DIg?4`eb8GL( literal 0 HcmV?d00001 diff --git a/developpment/interfacer/bh1750.py b/developpment/drivers/bh1750/bh1750.py similarity index 100% rename from developpment/interfacer/bh1750.py rename to developpment/drivers/bh1750/bh1750.py diff --git a/developpment/interfacer/interfacer.cpp b/developpment/interfacer.cpp similarity index 87% rename from developpment/interfacer/interfacer.cpp rename to developpment/interfacer.cpp index 33911e6..4f0eac6 100644 --- a/developpment/interfacer/interfacer.cpp +++ b/developpment/interfacer.cpp @@ -9,10 +9,10 @@ #include #include -#include "errorHandling.h" -#include "commandManager.h" -#include "systemCall.h" -#include "bh1750.h" +#include "./management/errorHandling.h" +#include "./management/commandManager.h" +#include "./systems/systemCall.h" +#include "./drivers/bh1750/bh1750.h" //#include "i2c_ch1_pImpL.cpp" #include diff --git a/developpment/interfacer.o b/developpment/interfacer.o new file mode 100644 index 0000000000000000000000000000000000000000..d8d613f7f6558099908d1b25d2b372ca7107526d GIT binary patch literal 25368 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 RxGW>MKKT1{*dj@A{|5#;1+V}B literal 0 HcmV?d00001 diff --git a/developpment/interfacer/$ b/developpment/interfacer/$ deleted file mode 100644 index 561212d..0000000 --- a/developpment/interfacer/$ +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef _EXECUTEBASH_H_ -#define _EXECUTEBASH_H_ - -#include -#include -#include -#include -#include -#include - -std::string execBash(const char* cmd); - -#endif //_EXECUTEBASH_H_ diff --git a/developpment/interfacer/commandManager.cpp b/developpment/management/commandManager.cpp similarity index 100% rename from developpment/interfacer/commandManager.cpp rename to developpment/management/commandManager.cpp diff --git a/developpment/interfacer/commandManager.h b/developpment/management/commandManager.h similarity index 100% rename from developpment/interfacer/commandManager.h rename to developpment/management/commandManager.h diff --git a/developpment/management/commandManager.o b/developpment/management/commandManager.o new file mode 100644 index 0000000000000000000000000000000000000000..c9eefcfa4aa02184388118e5dc428d6f07807555 GIT binary patch literal 23436 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 KU9iQF(ffZ{Jwp@# literal 0 HcmV?d00001 diff --git a/developpment/interfacer/errorHandling.cpp b/developpment/management/errorHandling.cpp similarity index 100% rename from developpment/interfacer/errorHandling.cpp rename to developpment/management/errorHandling.cpp diff --git a/developpment/interfacer/errorHandling.h b/developpment/management/errorHandling.h similarity index 100% rename from developpment/interfacer/errorHandling.h rename to developpment/management/errorHandling.h diff --git a/developpment/management/errorHandling.o b/developpment/management/errorHandling.o new file mode 100644 index 0000000000000000000000000000000000000000..5826368bc58cef7ff195f7d5f25abb058656ab29 GIT binary patch literal 7116 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 Ad;kCd literal 0 HcmV?d00001 diff --git a/developpment/interfacer/i2c.hpp b/developpment/periferals/i2c/i2c.hpp similarity index 100% rename from developpment/interfacer/i2c.hpp rename to developpment/periferals/i2c/i2c.hpp diff --git a/developpment/interfacer/i2c_ch0_pImpL.cpp b/developpment/periferals/i2c/i2c_ch0_pImpL.cpp similarity index 99% rename from developpment/interfacer/i2c_ch0_pImpL.cpp rename to developpment/periferals/i2c/i2c_ch0_pImpL.cpp index 3b34f6e..6201bc8 100644 --- a/developpment/interfacer/i2c_ch0_pImpL.cpp +++ b/developpment/periferals/i2c/i2c_ch0_pImpL.cpp @@ -1,5 +1,4 @@ #include "i2c_ch0_pImpL.h" -#include "systemCall.h" #include #include diff --git a/developpment/interfacer/i2c_ch0_pImpL.h b/developpment/periferals/i2c/i2c_ch0_pImpL.h similarity index 89% rename from developpment/interfacer/i2c_ch0_pImpL.h rename to developpment/periferals/i2c/i2c_ch0_pImpL.h index c91299c..51fa22a 100644 --- a/developpment/interfacer/i2c_ch0_pImpL.h +++ b/developpment/periferals/i2c/i2c_ch0_pImpL.h @@ -4,7 +4,8 @@ #include #include #include -#include "errorHandling.h" +#include "../../management/errorHandling.h" +#include "../../systems/systemCall.h" class i2c_ch0_pImpL { diff --git a/developpment/periferals/i2c/i2c_ch0_pImpL.o b/developpment/periferals/i2c/i2c_ch0_pImpL.o new file mode 100644 index 0000000000000000000000000000000000000000..b47e8eca17a6638bd055ba10d0b3782b8ab7a53b GIT binary patch literal 5288 zcmcgwU2Ggz8U1G0aW+4|CNW@Q3kKwXo5q{j#8^(Kgj2^&EW2rByAVO8>3DXU9c8_< z?2a1;kSHY*0fJQVghZqm@q(&6_#vtQ8BwVbibNhPg~zChooo~Yr~&1n4;AK|nLF$2 z!7eEeTx<5+bHDF?fA?ob{@%#=bB19^(hTX9HHOjMkz`AM1ii9L@**eu{?fMa(-m{+ z`4v-kG<)(pnw>JXBG&x9H_WTeJ^A^2|5{!BYo|4~l0iQ!^ULIrFE`9TJTR@U=7Rao zGVzghds$@i9^AZnCV#bgMy@s^U30!A&*tZsGn$P-=;<~OXxxz4H*Hg=Z3%H*`u#&h zE!|NLB9_7=k390oA&;HNBX90#=2TpqzY~42Za1@t=PvvtdHm|D$i;f^fr@?mO~`I) zvA5=>V*j-kE9-GZ<4Np!`ZRAxakQE5tc!=SwOKz{F-+7Iwv%`a)X=cz_rPX0i7O|v zeF*lgBrf>VYbB~yTsOT|*{veaq-u4BT&??)*6TieC-J50bqlgvNnEJyX7#$J)ra+( z*LbU5W*643tC^Fo$e+G`?Du?xdL4)T{voc_e2xw`=oSK0-|%X|-(4%dfw0mbBWjmNzt>)Up$Mup{5q z%&R@9$HPAN;FH#^4EwEn5dNk%@E6;>-E3H^53>EdS63f!Y#;8bXv}*3F6;7^_06az z$vybr_GwPL3%Lh)uWS?9%k$Z5UTtEnm$!hMs&3sF>qdO}q>kE|SY1_@NCN8q$U&cV zTjo0fcXOhrzjqFnyjKtUhupq>C7G={(-qGQ12d?3Rr9C`d* zL3>*Uq`f_7Y%{iJcDHpHpEN$5?KD1P?9Fr=pKbqwUQIgCe4*ba|5&#=+4XOI$>L9M zS%GQ*8tI$5zE^e{?yDhUuB1#lU(?|C*56b7pDDh-RZHPlrSzxx^~~A?%12W27gGGkDgH~v zllXoI&b|d?yzi#;@2B|Qlz$VP>(4kje>f#S3C{IDspJ7T*ZXC~f0ojJGsSEfDUOZCsJ=Z($H$2-7s*SKd>xQvt(6;@+ull5? zj@b6u>a6X~&5a)_+IGo%#hI;yb|rAn*|nhJyB9{3!NX1kqfQvqZKr-V9vtw`R)e}H zJq~z3<~Kqo^j(|QeW&7o8!V{WPPGKfaSY^^?~8q6{Do(ajbqB}v^{Dgl;Yua=?otl znHVceqgt!`)$kSJRUdh+G)5=GV$m%-bvvv(e%KgwM@A+vc6i!pzx=O!kDNjuK2-wkHt>hycnQf1VAG6z%klm!<9w%B%b4coKT z^FETrO4zk}kFQ*b1D9X)#?^r$ddw8anHu<}1;T$ae#2JQ#>a?_oVZ=e@P z^Yx%!QqfF|McXBnO=M2fqNT}j&<`3mmcr{F#XcA=j=b8cj}v-x+<11W5!hwyi;B0= zoa3AmzazW9g!6@dcQ4Kj@hOox;(n1!ivOJWw8%X1fC%3K8Qhz{QOJ8R(2GyAO*TSA2>HyDt%8_c9T|TvzfNN`6bpd0)`)Ln8eBP4P!W_EKyg#Vk0-y*{QlHxhO z3y+{q#G|;Iff@L=h+o0_6Q9ARK--U+M(tqyJ+l83@wW)acTx_{cMy4p;{3KF=lhm& zQ}G_fv4tbKr4S&Q&*7)gxG)ns)4;GEV>#*7y-ERxCX_9Im29dp}ftLZUZ_zOI+wy7s>gUGGG!S9_gacwW4`QoD1V7ZnQE0V9kC@b$!aLAg!bEI;`63?1m&e0clU&i2Ydb{V V)g~tPkls4I5CcEq1l1C~e**`Q&cOfx literal 0 HcmV?d00001 diff --git a/developpment/interfacer/i2c_ch1_pImpL.cpp b/developpment/periferals/i2c/i2c_ch1_pImpL.cpp similarity index 99% rename from developpment/interfacer/i2c_ch1_pImpL.cpp rename to developpment/periferals/i2c/i2c_ch1_pImpL.cpp index a498ea2..7818b65 100644 --- a/developpment/interfacer/i2c_ch1_pImpL.cpp +++ b/developpment/periferals/i2c/i2c_ch1_pImpL.cpp @@ -1,5 +1,4 @@ #include "i2c_ch1_pImpL.hpp" -#include "systemCall.h" #include #include diff --git a/developpment/interfacer/i2c_ch1_pImpL.hpp b/developpment/periferals/i2c/i2c_ch1_pImpL.hpp similarity index 89% rename from developpment/interfacer/i2c_ch1_pImpL.hpp rename to developpment/periferals/i2c/i2c_ch1_pImpL.hpp index 4c5d5fd..d53d85f 100644 --- a/developpment/interfacer/i2c_ch1_pImpL.hpp +++ b/developpment/periferals/i2c/i2c_ch1_pImpL.hpp @@ -4,7 +4,8 @@ #include #include #include -#include "errorHandling.h" +#include "../../systems/systemCall.h" +#include "../../management/errorHandling.h" class i2c_ch1_pImpL { diff --git a/developpment/periferals/i2c/i2c_ch1_pImpL.o b/developpment/periferals/i2c/i2c_ch1_pImpL.o new file mode 100644 index 0000000000000000000000000000000000000000..8402b60c4ae72f24d04fdad2f15f8636f47902e8 GIT binary patch literal 5288 zcmcgwU2Ggz8U1G0PBuTlCNW@Q3kKwXo5q{j#8^(Kgj2^&EW2rByAVO8>3DXU9c8_< z?2a1;kSHY*0fK~hLLyR(ctKSj{18=ujHpx#MIsND!edm$PBsbx)PVBPhYEAf%$@c1 z;6y18Tx<5+bHDF?fA?ob{@%#=3x;7x(hTX9b%xR1k)*vpf?nArd6AQSe{Ea%>8iQ> z;;Jb-nmzd)%}yCxHLUr&KQpg3_vGjA{(EihZ=KfIY6ktR%&(A(HNVm@|9IcDx|$2- zyDP+p)~ywh$-8j#)|vd(<{7!#jC9TUmOPuEU&&}T2BD|hJfLwyV&Ak)ownt%Rk`$s z2Z&m_qZ~vmg-ITHc0mzvq@Yz zk?ljUZzXZTpI$3bwZfcejgnerw~9QMs?`~CweC+_uY2&F#FwtuO~`I0aiO-4tJgKH zKCIWg##{9=yRdd$&75>a{`B=@zvm;=>p1N9Cvm}_wTZvjCiaB3zc#B`?FlvOupYn9 z9>M41>UJBl+ev&+sN13zH|w^b@mAeZ`>X?e0q3z{zJH%Nwm)X?Wm0=D^MBlXoj9v` zoYfBAIXJ7_yKh@#D?Bs2OSmS?BRR9VU5~HjL)7GqF(%IJcX->Nfxd(W!Y!lhb^Vw@&ZDOrg+QCg#w{DDeBffl6N9|0kt*J{S0d;@m zpwGIk@ST9WInmSKI|obN>j(WqZr{F=%vPQ0if4v_8PvS0dDMhG^YiAnX8q8wo)vky zC9ivqTQ)J(cfD9|U3R|ihhA&a`Z(s4TEjB*OXK?s3vXOx$RD-OIczuZ?8Nf{66ypV z$cpp;!?yU{^A{A5xejiL5nYiJ!^20--U+8soA#ZmIaoMcu=)m`t=IhGGcl861?V}R zGwq8(d+h_VWlPT3W^B*wZtE~UX?!}{X?(`mo9Q+_yX6adHR(X}g?^j-bHnOnH@@{H zi$A?(F+*=zX_r0v0QjdAr)LAaxPiB&^xI?za$4m>eJrKmofSnw{$2E0$Hd-`&|hyx zWbb-wU}L^n*^=^yVrwlcTT}9_Li=31xW)GGw9FcjoNKDfJ6dImoB{z|KCv7CEA zmoH*3B%J=aHxhnX@e(kDDzM(Ytu$hL+(U6QWDy;5e&;0mr!~1!j36u9Qu*VQYb_g9 zetjS-JJtz$S^1d!S>}yAj_#O@rTC|48wFrTG3bxIheAiEVvl3#kQks z*q*JP_mM1C!mibebe7Jl7-jX}f+NxE==lqwM}^6vEq>sJmH#Q@vP8xm4oY0%&#@E>uH-|fmd0Ry24-p|hNre1WApMqz@LN{ALWJL% z;tN3fT_(cL10wu>pm>h4!)~4kyCxBN4-t`fnTUCFMCiRigx)(q`d=c#{|&`&65)SY z@f_cUM^Go?QQXbI418O}uVDR&&tX%b?MF?cb};@P+5d_7TZH2~DF^2}h`d8_e%q1r zeM`Bic#q=P!jark2$0O@@Kb19m8mrGP^dN}=S0jufUF4Jp)vm>ipU zu>cuoQZJ@{X)dO`g>hHcoeNTMgP9qx3M|Vz1)YZ+C3-H948Fx{`73 #include diff --git a/developpment/interfacer/i2c_driver.h b/developpment/periferals/i2c/i2c_driver.h similarity index 88% rename from developpment/interfacer/i2c_driver.h rename to developpment/periferals/i2c/i2c_driver.h index dbbc361..dd69c05 100644 --- a/developpment/interfacer/i2c_driver.h +++ b/developpment/periferals/i2c/i2c_driver.h @@ -1,7 +1,8 @@ #include #include #include -#include "errorHandling.h" +#include "../../management/errorHandling.h" +#include "../../systems/systemCall.h" class I2C_Driver { diff --git a/developpment/periferals/i2c/i2c_driver.o b/developpment/periferals/i2c/i2c_driver.o new file mode 100644 index 0000000000000000000000000000000000000000..57c9c2645196bfebd321609347176c8c4b1db8a1 GIT binary patch literal 5280 zcmcgwU2Ggz8U1E=oj5gG2-R-aDo`m#>O&tQ%sDf6 zCfB1lN_pT~v*(`sefRsjKeOJS4~;%;7>2~nkZ!rpL_XUUN?Q6t=$2iQ7dh4QkKFuk zR=Ss-Sutftvn#)&*=+)?j;2_*n(Z>Oa@D-n+>@XC@IUM8|7y2JRx;>kWp0^Vthwce z`Il7_`t#;{%fvP7*0RX>hr31IKAXSRJS*3lp{_ZX$g}ym<&0)y0D8L30~$9Z@=e>+ z$t{hn$g6+;7|~0oO4d>s=aWZ1t;lC5^2sBgRuvcL??j)uWf9K@@Du0pyQh$gb$3<8 zzWpX-H?`Q4d8ydn(qd&j-q3g)d!9bcTVWhI^Sur6Ft(ia(u!fCuCN`)W1xnHHMa*g zvvFLlBHNF`z7@v>e|oJ%)e3XMHHvGM-74~As#a&o)%rhby*`5PIKFhf79m@V<3epW ztJfd2`mkPe8c*tFc3|x~nyu0i`qS5s{jSeZuM@D}7smyE)&u-SHnAtP{q>-l)gDr_ zHf!^J_9=XBR<}El-HGFSNZoE|akFmo8c*t$+GlOx^Ei(U^X@8hY}sV*Wm0=D^MBlX z?KrD>oYgj*)pnd!?%j8+k!7A4-X&ZU<`JLS)?J&|at$?E(`uQ_%Wu4ImbBWjmJ1q> zYuS!H*p}~T=G7k5<6)nB@KNhF1^dZ82!9g~@E6&<)ofVntJyx@tLv*A+lRX<9J5~h zfOUDt`cYVuhn;PGpSEguA@>09m2Dz>c|N<%YfY^6atpYr>eh*|PQ;gw>!_WH^>uZL z#GvkvR_L>C%X}x`ZjSZz_s_wSck!U#>-Ov`$#lh;EPG~9HLEqRVjeMJ&-{k@lW9Nj zE9XR>P2_dYai>g7^<6L0yDz&`_X97PbblOkO3APseckxQ{QTvY8S>}ta}L`Qo}KJu zMA`v;S&=T_3po+Kd+wls%=PG&2+>hI(wMpNpm;;4F1*@n3iF(a1J{~bS zR)C)4Ig`E^wAa!vTeh?s+l=j*-MKd7%f?r-?Z#J)y_rtqYg@jlSCbAjU+CxL-y2pZ zyW#CGlEt6ivY4T_thDeOf!11Nk7D#}K+bU4BA!d>=j6MP(JCM6mwA#-h zZ|fZWcXiI%;XbrWb^oGQFSxaubd|*Z;dn4wJY4fV*Sq95Jlm~S8bN*94I@IwIzhE=JN0wXV84H^ zQmuQ^<$(8Lej{)K-?eGocgp@x!KxM8sgz(jihs*tL3*&NgIKjI&A!4u>zI#W6M#?h-wT(2%A=8{@%%Uv1bZzt=a6wI3`FT}*1?1l|lcn_X&D z?J4YqviG1lCpbqAU`uyC7X7c$*)1|f{G7)}XQ2YuJeqSTP@0-M;$O5rn-^L2a_8nYJyXA&6HBbeYxG8+)bz8D~;2qJC*6qP%!6pfu4&A`Y3DII`Fv-&(V;Hy!=J%2h<1<&Zk~0o_&gA%Z2T# zW{U&##fD`M^>w{iMtSU)HRd>6g^l)JQGG(JH-Nsb*RK7xq3fND^lC415N!f_@m%uQ z-XQvVzW1<6cyBRZObPXv@AuVMoW~UiV;c~Keey9py1f#9cjJ88<2ZH5C-E>3=FN5$ z_PU~O_(>U`^9sX3d|YQxTB8oz&+s6&T1fCgJsgFk#d^fJ#uR=8y(LV<_LpzrVSFe- f7;Bs>s9fJ6@;7Z_Y>z)H>Uw1i{F)O~i}n5sdO*s% literal 0 HcmV?d00001 diff --git a/developpment/runtest b/developpment/runtest new file mode 100755 index 0000000000000000000000000000000000000000..e5cd4b4d0605326762da0f096fab4b1139f5618c GIT binary patch literal 47544 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

(Gv@{iuMPpmynV36v{DVf- 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 literal 0 HcmV?d00001