void closeAll(shoeSide side) { Byte [] sendLargeByte = new Byte[6]; sendLargeByte[0] = 0xFF; sendLargeByte[1] = 0xFF; sendLargeByte[2] = 0x00; sendLargeByte[3] = 0xFF; sendLargeByte[4] = 0xFF; sendLargeByte[5] = 0x00; if (side == shoeSide.left) { for (int i = 1; i < 8; i++) { leftFootValveStatus[i] = false; } udpClient.Send(sendLargeByte, sendLargeByte.Length, remoteEndPointLeft); } else { for (int i = 1; i < 8; i++) { rightFootValveStatus[i] = false; } udpClient.Send(sendLargeByte, sendLargeByte.Length, remoteEndPointRight); } }
//0 is left shoe, 1 is right shoe public string shoeValve(shoeSide sSide) { //returns a string with the valve state string valveStatus = ""; for (int i = 7; i > 0; i--) { if (sSide == shoeSide.left) { if (leftFootValveStatus[i]) { //append to string valveStatus = valveStatus + 1; } else { valveStatus = valveStatus + 0; } } else { if (rightFootValveStatus[i]) { valveStatus = valveStatus + 1; } else { valveStatus = valveStatus + 0; } } } return(valveStatus); }
//Toggles the valve sent in with valve and the shoe corresponding to side void toggleValve(int valve, shoeSide side) //valve should be 0-6 { valve = valve + 1; if (side == shoeSide.left) { if (leftFootValveStatus[valve]) //left foot valve is open { leftFootValveStatus[valve] = false; //close valve string hex = valve.ToString("X"); Byte [] sendLargeByte = new Byte[6]; sendLargeByte[0] = Convert.ToByte(hex, 16); sendLargeByte[1] = 0xFF; sendLargeByte[2] = 0x00; sendLargeByte[3] = Convert.ToByte(hex, 16); sendLargeByte[4] = 0xFF; sendLargeByte[5] = 0x00; udpClient.Send(sendLargeByte, sendLargeByte.Length, remoteEndPointLeft); } else //left foot valve is closed { leftFootValveStatus[valve] = true; string hex = valve.ToString("X"); sendBytes[0] = Convert.ToByte(hex, 16); sendBytes[1] = 0xEE; sendBytes[2] = 0x00; udpClient.Send(sendBytes, sendBytes.Length, remoteEndPointLeft); } } else //implied right side { if (rightFootValveStatus[valve]) //left foot valve is open { rightFootValveStatus[valve] = false; //close valve string hex = valve.ToString("X"); Byte [] sendLargeByte = new Byte[6]; sendLargeByte[0] = Convert.ToByte(hex, 16); sendLargeByte[1] = 0xFF; sendLargeByte[2] = 0x00; sendLargeByte[3] = Convert.ToByte(hex, 16); sendLargeByte[4] = 0xFF; sendLargeByte[5] = 0x00; udpClient.Send(sendLargeByte, sendLargeByte.Length, remoteEndPointRight); } else //left foot valve is closed { rightFootValveStatus[valve] = true; string hex = valve.ToString("X"); sendBytes[0] = Convert.ToByte(hex, 16); sendBytes[1] = 0xEE; sendBytes[2] = 0x00; udpClient.Send(sendBytes, sendBytes.Length, remoteEndPointRight); } } }
//opens all valves in openarray, closes all vales in close array (like usual, //it closes them twice) void openValvecloseValve(int [] openArray, int [] closeArray, shoeSide sSide) { //3 bytes for opening, 6 for closings (since there are two close messages) int size = openArray.Length * 3 + closeArray.Length * 6; Byte [] sendLargeByte = new Byte[size]; for (int i = 0; i < openArray.Length; i++) { if (sSide == shoeSide.left) { leftFootValveStatus[openArray[i]] = true; } else { rightFootValveStatus[openArray[i]] = true; } string hex = openArray[i].ToString(); sendLargeByte[(i * 3)] = Convert.ToByte(hex, 16); sendLargeByte[((i * 3) + 1)] = 0xEE; sendLargeByte[((i * 3) + 2)] = 0x00; } for (int i = 0; i < closeArray.Length; i++) { if (sSide == shoeSide.left) { leftFootValveStatus[closeArray[i]] = false; } else { rightFootValveStatus[closeArray[i]] = false; } string hex = closeArray[i].ToString(); sendLargeByte[openArray.Length * 3 + (i * 6)] = Convert.ToByte(hex, 16); sendLargeByte[openArray.Length * 3 + ((i * 6) + 1)] = 0xFF; sendLargeByte[openArray.Length * 3 + ((i * 6) + 2)] = 0x00; sendLargeByte[openArray.Length * 3 + ((i * 6) + 3)] = Convert.ToByte(hex, 16); sendLargeByte[openArray.Length * 3 + ((i * 6) + 4)] = 0xFF; sendLargeByte[openArray.Length * 3 + ((i * 6) + 5)] = 0x00; } if (sSide == shoeSide.left) { udpClient.Send(sendLargeByte, sendLargeByte.Length, remoteEndPointLeft); } else if (sSide == shoeSide.right) { udpClient.Send(sendLargeByte, sendLargeByte.Length, remoteEndPointRight); } }
void openAll(shoeSide side) { sendBytes[0] = 0xEE; sendBytes[1] = 0xEE; sendBytes[2] = 0x00; if (side == shoeSide.left) { for (int i = 1; i < 8; i++) { leftFootValveStatus[i] = true; } udpClient.Send(sendBytes, sendBytes.Length, remoteEndPointLeft); } else { for (int i = 1; i < 8; i++) { rightFootValveStatus[i] = true; } udpClient.Send(sendBytes, sendBytes.Length, remoteEndPointRight); } }
//uses rightfootstatus and leftfootstatus dictionarys to compile the openarray/closearray //to resend valve status to the shoe in case if dropped packets public void resendValveState(shoeSide sSide) { int openAmount = 0; int closeAmount = 0; for (int i = 1; i < 8; i++) { if (sSide == shoeSide.left) { if (leftFootValveStatus[i]) { openAmount++; } else { closeAmount++; } } else { if (rightFootValveStatus[i]) { openAmount++; } else { closeAmount++; } } } int[] openArray = new int[openAmount]; int[] closeArray = new int[closeAmount]; //7654321 int openIter = 0; int closeIter = 0; for (int i = 1; i < 8; i++) { if (sSide == shoeSide.left) { if (leftFootValveStatus[i]) { openArray[openIter] = i; openIter++; } else { closeArray[closeIter] = i; closeIter++; } } else { if (rightFootValveStatus[i]) { openArray[openIter] = i; openIter++; } else { closeArray[closeIter] = i; closeIter++; } } } openValvecloseValve(openArray, closeArray, sSide); }