From 3087001faa45e78572389d233ba92dfa27404002 Mon Sep 17 00:00:00 2001 From: Jake <jake.read@cba.mit.edu> Date: Sun, 18 Sep 2022 11:31:44 -0400 Subject: [PATCH] towards new-queue tests --- firmware/axl-stepper/src/axl | 2 +- firmware/axl-stepper/src/main.cpp | 85 ++++++++++++++++--------------- 2 files changed, 46 insertions(+), 41 deletions(-) diff --git a/firmware/axl-stepper/src/axl b/firmware/axl-stepper/src/axl index 2715834..be9a5a9 160000 --- a/firmware/axl-stepper/src/axl +++ b/firmware/axl-stepper/src/axl @@ -1 +1 @@ -Subproject commit 2715834fbc79e77f061f0812234ab3a8eeb14f27 +Subproject commit be9a5a919bc9c6324f4ce6dcdfccac6837b659df diff --git a/firmware/axl-stepper/src/main.cpp b/firmware/axl-stepper/src/main.cpp index 6d03ad5..3736b2c 100644 --- a/firmware/axl-stepper/src/main.cpp +++ b/firmware/axl-stepper/src/main.cpp @@ -24,11 +24,35 @@ OSAP osap("axl-stepper_z"); //OSAP osap("axl-stepper_rl"); //OSAP osap("axl-stepper_rr"); +// -------------------------------------------------------- 0: USB Serial + VPort_ArduinoSerial vpUSBSerial(&osap, "arduinoUSBSerial", &Serial); -VBus_UCBusDrop vbUCBusDrop(&osap, "ucBusDrop"); +// -------------------------------------------------------- 1: Bus Drop + +VBus_UCBusDrop vbUCBusDrop(&osap, "ucBusDrop"); + +// -------------------------------------------------------- 2: AXL Settings + +EP_ONDATA_RESPONSES onAXLSettingsData(uint8_t* data, uint16_t len){ + // jd, then pairs of accel & vel limits, + axlSettings_t settings; + uint16_t rptr = 0; + for(uint8_t a = 0; a < AXL_NUM_DOF; a ++){ + settings.accelLimits.axis[a] = ts_readFloat32(data, &rptr); + settings.velocityLimits.axis[a] = ts_readFloat32(data, &rptr); + } + settings.queueStartDelayMS = ts_readUint32(data, &rptr); + settings.ourActuatorID = ts_readUint8(data, &rptr); + // ship em... + axl_setSettings(settings); + // don't stash data, + return EP_ONDATA_ACCEPT; +} + +Endpoint axlSettingsEP(&osap, "axlSettings", onAXLSettingsData); -// -------------------------------------------------------- 2: States +// -------------------------------------------------------- 3: Axl Modal Requests EP_ONDATA_RESPONSES onStateData(uint8_t* data, uint16_t len){ /* @@ -79,39 +103,9 @@ EP_ONDATA_RESPONSES onStateData(uint8_t* data, uint16_t len){ Endpoint statesEP(&osap, "states", onStateData); -// -------------------------------------------------------- 3: Halt - -EP_ONDATA_RESPONSES onHaltData(uint8_t* data, uint16_t len){ - axl_halt(AXL_HALT_REQUEST); - return EP_ONDATA_REJECT; -} - -Endpoint haltInEP(&osap, "haltInput", onHaltData); -Endpoint haltOutEP(&osap, "haltOutput"); - -// -------------------------------------------------------- 5: AXL Settings +// -------------------------------------------------------- 4: Axl Queue Addition -EP_ONDATA_RESPONSES onAXLSettingsData(uint8_t* data, uint16_t len){ - // jd, then pairs of accel & vel limits, - axlSettings_t settings; - uint16_t rptr = 0; - for(uint8_t a = 0; a < AXL_NUM_DOF; a ++){ - settings.accelLimits.axis[a] = ts_readFloat32(data, &rptr); - settings.velocityLimits.axis[a] = ts_readFloat32(data, &rptr); - } - settings.queueStartDelayMS = ts_readUint32(data, &rptr); - settings.outActuatorID = ts_readUint8(data, &rptr); - // ship em... - axl_setSettings(settings); - // don't stash data, - return EP_ONDATA_ACCEPT; -} - -Endpoint axlSettingsEP(&osap, "axlSettings", onAXLSettingsData); - -// -------------------------------------------------------- 8: Precalcd-move-adder; - -EP_ONDATA_RESPONSES onPrecalculatedMoveData(uint8_t* data, uint16_t len){ +EP_ONDATA_RESPONSES onPlannedMoveData(uint8_t* data, uint16_t len){ axlPlannedSegment_t move; uint16_t rptr = 0; // location of move-in-sequence, to count continuity, @@ -134,10 +128,23 @@ EP_ONDATA_RESPONSES onPrecalculatedMoveData(uint8_t* data, uint16_t len){ return EP_ONDATA_REJECT; } -Endpoint precalculatedMoveEP(&osap, "plannedMovesIn", onPrecalculatedMoveData); +Endpoint precalculatedMoveEP(&osap, "plannedMovesIn", onPlannedMoveData); + +// -------------------------------------------------------- 5: Halt Input + +EP_ONDATA_RESPONSES onHaltInData(uint8_t* data, uint16_t len){ + axl_halt(AXL_HALT_REQUEST); + return EP_ONDATA_REJECT; +} + +Endpoint haltInEP(&osap, "haltIn", onHaltInData); + +// -------------------------------------------------------- 6, 7: Outputs +Endpoint queueAckOutEP(&osap, "queueAckOut"); +Endpoint haltOutEP(&osap, "haltOut"); -// -------------------------------------------------------- 6: Motor Settings +// -------------------------------------------------------- 8: Motor Settings uint8_t axisPick = 0; boolean invert = false; @@ -196,14 +203,12 @@ void loop() { // check for halt info... axlDataLen = axl_getHaltPacket(axlData); if(axlDataLen){ - #warning here - ibid, stick in endpoint, + haltOutEP.write(axlData, axlDataLen); } // check for on-queue-completion info... axlDataLen = axl_getQueueAck(axlData); if(axlDataLen){ - #warning here - if we have an ack, stick it in the endpoint... - // and if that endpoint isn't clear to write, we're fukd, halt! - // and add an axl_halt(<string>) option to print those messages + queueAckOutEP.write(axlData, axlDataLen); } // refresh stepper hw, stepper_hw->dacRefresh(); -- GitLab