From 62a8ce293eb8156ed04015c243044c00a5a3c4e5 Mon Sep 17 00:00:00 2001 From: Jake <jake.read@cba.mit.edu> Date: Fri, 18 May 2018 21:45:43 -0400 Subject: [PATCH] router feels solid --- .../mkrouter-v06/.vs/mkrouter-v06/v14/.atsuo | Bin 22016 -> 22016 bytes .../mkrouter-v06/mkrouter-v06/Debug/Makefile | 7 --- .../mkrouter-v06/Debug/makedep.mk | 2 - .../mkrouter-v06/mkrouter-v06/apahandler.c | 3 ++ .../mkrouter-v06/mkrouter-v06/apahandler.h | 24 --------- embedded/mkrouter-v06/mkrouter-v06/apaport.c | 4 +- embedded/mkrouter-v06/mkrouter-v06/apaport.h | 1 - embedded/mkrouter-v06/mkrouter-v06/hardware.h | 2 + .../mkrouter-v06/mkrouter-v06.cproj | 6 --- .../mkrouter-v06/sam_ba_monitor.c | 46 +++++++++++++++--- 10 files changed, 47 insertions(+), 48 deletions(-) delete mode 100644 embedded/mkrouter-v06/mkrouter-v06/apahandler.h diff --git a/embedded/mkrouter-v06/.vs/mkrouter-v06/v14/.atsuo b/embedded/mkrouter-v06/.vs/mkrouter-v06/v14/.atsuo index 9b391be6e8abd8e75ad0de9023f8a214455cb1e2..2493d226405116c878087141465236d67614cd02 100644 GIT binary patch delta 1127 zcmZoz!`QHfae@si4+8@O(?&;aCcX=n+&}-nyUZxdz`)R;G`WhYim`L@SEh5kjH(O_ z3~USx4FCWC|3CR6zY4De0|P@dBLf(4O=e_~p2Wox2$JPvU|<kuU|{(7|Nnn>1_lOU z1_lNZs7{bP2#Yc>FmN+4FbF}_fyAU37#L(27#KhXOG4H2ZZ2f`&B(W*a@lw6&Qd{h z*5ohjA}%0z{{8>|KP%L9kZV9TfLsJ}9f%FX{0s~X0t^fc97wJaWME*J?8BnM$h*0a zBb#~h9dQxUS_TG&ItB)YdZ?L=3=9lSpdf(qTNxM_+87uZ+8G!aI-p|zHU_R|oS2|9 ziN}LO3F;$I*ljN1>0wkQ%>)@%SB44()5(fv$~?*p3=E+70QmuA9%~H)1H+xkm3-=q zW|I|p)j8CVEMskeOPWtsGz(^H0mU}s<UmcY$w&BY7Kt!nb>8F#J_SaQb-}2n^FXX8 z!G=v*dl)D05jPP)55i3X9*i7{NKV~cBIv_3`GCB`B)$`qJ$Q8{f8h(@kz-(BU`A3j zxkTE3vNNyY<}cDbjFTNS7HA|g6fh(*WH2N$<T0c$<S?W%6fx*ABr}xEv=_JVb>KID z#HUtr;{2h>9GW^jybKHskHCqRfnj2xgTNLE#`NElvi7DHJe?J_V@fh8${7EH%(cUA zZU#f+e4pz(-DhZTD_WA)xl8^y$TUz?AY(?R$%;&3yr7%~ay&@Moym?G^AlVcQW?q^ zG8vK?QW@eIf*DE}5*dmZN*GER3K(J-ic$FS48;tI47m&`45kc*U@y5RNY`=|Z|>5N lxlx$7&^rNSF0!@%{}T#2UPh35P__ZlpwvUtfLx@f0RTK)h4}yg delta 692 zcmZoz!`QHfae@si7Xt$W<3>kqCccK%zc2iGcbQR^fq}t6esUF46=TihuT1B78I%|p z7}yvX82<nN|9|pDVHI8p1_p*^Mg}n8p3KN1t-u47=3`)B`1k++e{m=cV)HUEFiZ?o zm>k0)!pOe4kmWZcUxWC!b1=IY<iK{7L+nySvupAfb`b?u1_p+||Ns97nFcc%<RB2A z18lkp%yf=y=E*8NDwFs;IOL#i0y%ke311K6B#Va04GJC{ApgMpGWm-_z~m!L2CT&l z3=Fp>2U>bhK4NLNnMuZtk%Jk<09hX<fh`h@>Axps?M*FsIxA|&lw^?6tRVkA+Wb?P zooN%-2gb=NJOX%Zcb<Hh$#C))1%F;fkXMzFte9M)=ns<J{6&$65z{IGxd4k?hD3%; zhCBv6hGd4&dFM{&M<fZeJ>Au%e7R^bC^kU80^!e03=B^M7#Q9OGcZiyVqlm&LtX>Z z#EZfzFvrWXGi`D@z_`gJj%o5GCMB)|ObiUdprpYtS<t(6@_l#3$#dO`7#TP7ds{Iw z>P+_b(V6_rOKGw`69+3O?wKe53}~O+VCOKoL4<{oaq<U|>ctKrSbPy^Sv)zx(sq;7 f9#BZRpoi4t621#Ouy6<Y1Qf!POZa;h>1hA}hsgt3 diff --git a/embedded/mkrouter-v06/mkrouter-v06/Debug/Makefile b/embedded/mkrouter-v06/mkrouter-v06/Debug/Makefile index a75817b..f44e312 100644 --- a/embedded/mkrouter-v06/mkrouter-v06/Debug/Makefile +++ b/embedded/mkrouter-v06/mkrouter-v06/Debug/Makefile @@ -38,7 +38,6 @@ SUBDIRS := \ # Add inputs and outputs from these tool invocations to the build variables C_SRCS += \ -../apahandler.c \ ../apaport.c \ ../board_driver_serial.c \ ../board_driver_usb.c \ @@ -62,7 +61,6 @@ ASM_SRCS += OBJS += \ -apahandler.o \ apaport.o \ board_driver_serial.o \ board_driver_usb.o \ @@ -79,7 +77,6 @@ sam_ba_usb.o \ uartport.o OBJS_AS_ARGS += \ -apahandler.o \ apaport.o \ board_driver_serial.o \ board_driver_usb.o \ @@ -96,7 +93,6 @@ sam_ba_usb.o \ uartport.o C_DEPS += \ -apahandler.d \ apaport.d \ board_driver_serial.d \ board_driver_usb.d \ @@ -113,7 +109,6 @@ sam_ba_usb.d \ uartport.d C_DEPS_AS_ARGS += \ -apahandler.d \ apaport.d \ board_driver_serial.d \ board_driver_usb.d \ @@ -171,8 +166,6 @@ LINKER_SCRIPT_DEP+= \ - - diff --git a/embedded/mkrouter-v06/mkrouter-v06/Debug/makedep.mk b/embedded/mkrouter-v06/mkrouter-v06/Debug/makedep.mk index 3d40a92..1915db9 100644 --- a/embedded/mkrouter-v06/mkrouter-v06/Debug/makedep.mk +++ b/embedded/mkrouter-v06/mkrouter-v06/Debug/makedep.mk @@ -2,8 +2,6 @@ # Automatically-generated file. Do not edit or delete the file ################################################################################ -apahandler.c - apaport.c board_driver_serial.c diff --git a/embedded/mkrouter-v06/mkrouter-v06/apahandler.c b/embedded/mkrouter-v06/mkrouter-v06/apahandler.c index b30b07d..89a74e8 100644 --- a/embedded/mkrouter-v06/mkrouter-v06/apahandler.c +++ b/embedded/mkrouter-v06/mkrouter-v06/apahandler.c @@ -11,7 +11,10 @@ void apa_handle_packet(uint8_t *packet, uint8_t length){ // dirty debug reply + //sam_ba_port_put_data(packet, packet[0]); + // through packet + int i = 0; int apa_handler_state = APA_HANDLER_OUTSIDE; diff --git a/embedded/mkrouter-v06/mkrouter-v06/apahandler.h b/embedded/mkrouter-v06/mkrouter-v06/apahandler.h deleted file mode 100644 index 32c7104..0000000 --- a/embedded/mkrouter-v06/mkrouter-v06/apahandler.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * apahandler.h - * - * Created: 3/12/2018 11:55:40 AM - * Author: Jake - */ - - -#ifndef APAHANDLER_H_ -#define APAHANDLER_H_ - -#include "sam.h" - -#define APA_HANDLER_OUTSIDE 0 -#define APA_HANDLER_INSIDE 1 - -#define DELIM_KEY_TEST 127 // toggles a light, to test network -#define DELIM_KEY_STEPS 128 // steps (steps) uint32_t, speed (steps/s) uint32_t, dir uint8_t -#define DELIM_KEY_BLOCK 129 // is 32 bit int - -void apa_handle_packet(uint8_t *packet, uint8_t length); -void apa_return_packet(uint8_t *packet, uint8_t length); - -#endif /* APAHANDLER_H_ */ \ No newline at end of file diff --git a/embedded/mkrouter-v06/mkrouter-v06/apaport.c b/embedded/mkrouter-v06/mkrouter-v06/apaport.c index 12ea601..454d08a 100644 --- a/embedded/mkrouter-v06/mkrouter-v06/apaport.c +++ b/embedded/mkrouter-v06/mkrouter-v06/apaport.c @@ -64,7 +64,9 @@ void apaport_scan(apaport_t *apap, uint32_t maxpackets){ // now to handle // [p][0] is length of packet if(apap->packets[p][1] == APA_ROUTE_POINTER){ - apa_handle_packet(apap->packets[p], apap->packets[p][0]); + pin_set(&stlPacket); + sam_ba_port_put_data(apap->packets[p], apap->packets[p][0]); + //apa_handle_packet(apap->packets[p], apap->packets[p][0]); } else if(apap->packets[p][1] == APA_ROUTE_FLOOD){ // loop through bytes to find pointer and increment // now ship it out on all ports diff --git a/embedded/mkrouter-v06/mkrouter-v06/apaport.h b/embedded/mkrouter-v06/mkrouter-v06/apaport.h index 60651f0..7d16e3a 100644 --- a/embedded/mkrouter-v06/mkrouter-v06/apaport.h +++ b/embedded/mkrouter-v06/mkrouter-v06/apaport.h @@ -9,7 +9,6 @@ #ifndef APAPORT_H_ #define APAPORT_H_ -#include "apahandler.h" #include "uartport.h" #include "pin.h" diff --git a/embedded/mkrouter-v06/mkrouter-v06/hardware.h b/embedded/mkrouter-v06/mkrouter-v06/hardware.h index 8ed7671..23f2175 100644 --- a/embedded/mkrouter-v06/mkrouter-v06/hardware.h +++ b/embedded/mkrouter-v06/mkrouter-v06/hardware.h @@ -16,6 +16,8 @@ #include "uartport.h" #include "apaport.h" +#include "sam_ba_monitor.h" + // For if-case init #define HARDWARE_IS_APBA 0 diff --git a/embedded/mkrouter-v06/mkrouter-v06/mkrouter-v06.cproj b/embedded/mkrouter-v06/mkrouter-v06/mkrouter-v06.cproj index 63d2367..bec32ff 100644 --- a/embedded/mkrouter-v06/mkrouter-v06/mkrouter-v06.cproj +++ b/embedded/mkrouter-v06/mkrouter-v06/mkrouter-v06.cproj @@ -159,12 +159,6 @@ </ToolchainSettings> </PropertyGroup> <ItemGroup> - <Compile Include="apahandler.c"> - <SubType>compile</SubType> - </Compile> - <Compile Include="apahandler.h"> - <SubType>compile</SubType> - </Compile> <Compile Include="apaport.c"> <SubType>compile</SubType> </Compile> diff --git a/embedded/mkrouter-v06/mkrouter-v06/sam_ba_monitor.c b/embedded/mkrouter-v06/mkrouter-v06/sam_ba_monitor.c index c5c4869..8e399a9 100644 --- a/embedded/mkrouter-v06/mkrouter-v06/sam_ba_monitor.c +++ b/embedded/mkrouter-v06/mkrouter-v06/sam_ba_monitor.c @@ -273,26 +273,58 @@ static void put_uint32(uint32_t n) } uint32_t tick = 0; -uint8_t data_out[3] = {12, 48, 64}; +uint8_t data_out[3] = {12, 48, 64}; + +#define APA_CDC_NUM_STATIC_PACKETS 6 +uint8_t packCDC[APA_CDC_NUM_STATIC_PACKETS][256]; // static memory buffer for packets +uint8_t packCDC_num = 0; +uint8_t packCDC_position = 0; +uint8_t packCDC_readyNum = 0; static void sam_ba_monitor_loop(void) { // get bytes, handle.. length = sam_ba_getdata(ptr_monitor_if, data, SIZEBUFMAX); - pin_clear(&stlPacket); + // this should be better: but before we send we have to make sure COM is open, else port locked if(length > 0 && !usbComOpen){ usbComOpen = 1; pin_clear(&stlUsb); + uint8_t hello[2] = {0,0}; + sam_ba_putdata(ptr_monitor_if, &hello, 2); + return; + } + + // chunk packets into packCDC + if(length > 0 && usbComOpen){ + pin_clear(&stlPacket); + for(int i = 0; i < length; i ++){ + packCDC[packCDC_num][packCDC_position] = data[i]; + packCDC_position ++; + if(packCDC_position >= packCDC[packCDC_num][0]){ + packCDC_num = (packCDC_num + 1) % APA_CDC_NUM_STATIC_PACKETS; + packCDC_readyNum ++; + packCDC_position = 0; + } + } } - // reply - sam_ba_putdata(ptr_monitor_if, data, length); + // handle all of the ready packets + while(packCDC_readyNum > 0){ + uint8_t p = (packCDC_num + APA_CDC_NUM_STATIC_PACKETS - packCDC_readyNum) % APA_CDC_NUM_STATIC_PACKETS; + // we're going to forward them all, 1st byte is port out + uint8_t port = packCDC[p][1]; + if(port > NUM_UPS){ + port = NUM_UPS - 1; // if overrun, go on last port + } + uart_sendchars_buffered(ups[port], packCDC[p], packCDC[p][0]); + packCDC_readyNum --; + } + + // reply USB direct to debug if USB coming thru + // sam_ba_putdata(ptr_monitor_if, data, length); // have to implement APA code here? and watch for multipackets? - for(int i = 0; i < length; i ++, ptr++){ - // apa - } pin_set(&stlPacket); // dirt nasty heartbeat -- GitLab