Skip to content
Snippets Groups Projects
Commit 9d2a4f8b authored by Jake Read's avatar Jake Read
Browse files

statewise control back online

parent 9fef161d
No related branches found
No related tags found
No related merge requests found
Subproject commit 0b8fc43e4c0ac860abc96a51eccc5d222ed11bb6
Subproject commit bda32c5b94c68a6f674d8ccac94a9abf4524e9d5
......@@ -20,8 +20,8 @@
//OSAP osap("axl-stepper_y-right");
//OSAP osap("axl-stepper_x");
//OSAP osap("axl-stepper_e");
OSAP osap("axl-stepper_z");
//OSAP osap("axl-stepper_rl");
// OSAP osap("axl-stepper_z");
OSAP osap("axl-stepper_rl");
// OSAP osap("axl-stepper_rr");
// -------------------------------------------------------- 0: USB Serial
......@@ -54,8 +54,7 @@ Endpoint axlSettingsEP(&osap, "axlSettings", onAXLSettingsData);
// -------------------------------------------------------- 3: Axl Modal Requests
EP_ONDATA_RESPONSES onStateData(uint8_t* data, uint16_t len){
/*
EP_ONDATA_RESPONSES onStateRequestData(uint8_t* data, uint16_t len){
// check for partner-config badness,
if(len != AXL_NUM_DOF * 4 + 2){ OSAP::error("state req has bad DOF count"); return EP_ONDATA_REJECT; }
// we have accel, rate, posn data,
......@@ -96,44 +95,43 @@ EP_ONDATA_RESPONSES onStateData(uint8_t* data, uint16_t len){
break;
}
}
*/
// since we routinely update it w/ actual states (not requests)
return EP_ONDATA_REJECT;
}
Endpoint statesEP(&osap, "states", onStateData);
Endpoint stateRequestsEP(&osap, "stateRequests", onStateRequestData);
// -------------------------------------------------------- 4: Axl Queue Addition
EP_ONDATA_RESPONSES onSegmentData(uint8_t* data, uint16_t len){
// careful, if you add a new field in axlPlannedSegment_t, recall you have to copy
// it manually into the buffer (!)
axlPlannedSegment_t move;
axlPlannedSegment_t segment;
uint16_t rptr = 0;
// location of move-in-sequence, to count continuity,
move.segmentNumber = ts_readUint32(data, &rptr);
// location of segment-in-sequence, to count continuity,
segment.segmentNumber = ts_readUint32(data, &rptr);
// which actuator is requested to ack this mfer,
move.returnActuator = ts_readUint8(data, &rptr);
segment.returnActuator = ts_readUint8(data, &rptr);
// is it the end of this stream ?
move.isLastSegment = ts_readBoolean(data, &rptr);
OSAP::debug("segnum, isLast " + String(move.segmentNumber) + ", " + String(move.isLastSegment));
// unit vector describing move's direction,
segment.isLastSegment = ts_readBoolean(data, &rptr);
OSAP::debug("segnum, isLast " + String(segment.segmentNumber) + ", " + String(segment.isLastSegment));
// unit vector describing segment's direction,
for(uint8_t a = 0; a < AXL_NUM_DOF; a ++){
move.unitVector.axis[a] = ts_readFloat32(data, &rptr);
segment.unitVector.axis[a] = ts_readFloat32(data, &rptr);
}
// start vel, accel-rate (up, and down), max velocity, final velocity, distance (all +ve)
move.vi = ts_readFloat32(data, &rptr);
move.accel = ts_readFloat32(data, &rptr);
move.vmax = ts_readFloat32(data, &rptr);
move.vf = ts_readFloat32(data, &rptr);
move.distance = ts_readFloat32(data, &rptr);
segment.vi = ts_readFloat32(data, &rptr);
segment.accel = ts_readFloat32(data, &rptr);
segment.vmax = ts_readFloat32(data, &rptr);
segment.vf = ts_readFloat32(data, &rptr);
segment.distance = ts_readFloat32(data, &rptr);
// and send it...
axl_addMoveToQueue(move);
axl_addSegmentToQueue(segment);
// don't write to endpoint...
return EP_ONDATA_REJECT;
}
Endpoint precalculatedMoveEP(&osap, "segmentsIn", onSegmentData);
Endpoint precalculatedSegmentEP(&osap, "segmentsIn", onSegmentData);
// -------------------------------------------------------- 5: Halt Input
......@@ -216,7 +214,7 @@ void loop() {
if(axlDataLen){
segmentAckOutEP.write(axlData, axlDataLen);
}
// check for queueMoveComplete
// check for queueSegmentComplete
axlDataLen = axl_getSegmentCompleteMsg(axlData);
if(axlDataLen){
segmentCompleteOutEP.write(axlData, axlDataLen);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment