Skip to content
Snippets Groups Projects
Commit c11aec21 authored by fxk8y's avatar fxk8y :spider:
Browse files

Working packet Handler! Committing with debug output and stuff :smirk:

parent 141e818e
No related branches found
No related tags found
No related merge requests found
......@@ -69,14 +69,12 @@ namespace SiliconTorch {
} else if(packetStartIdx > startIdx) {
ESP_LOGW("Mapping[ P > W ]", "startIdx[ %d ] packetIdx[ %d ] mapping: packetPx[ 0 ] to localPx[ %d ]", startIdx, packetStartIdx, packetStartIdx-startIdx);
/*
P = 10;
W = 5;
delta = P - W // 5;
delta = P - W; // 5
for I = delta; I < min(LEDs, packetLen + delta); i++:
leds[I] = packet[I - delta]
......@@ -85,20 +83,56 @@ namespace SiliconTorch {
uint16_t delta = packetStartIdx - startIdx;
uint8_t X = 0;
for (uint16_t px = delta; px < std::min(leds, (uint16_t)(packetPxs + delta)); px++) {
buffer1[px].r = packetPx[px - delta].r / 255.0f;
buffer1[px].g = packetPx[px - delta].g / 255.0f;
buffer1[px].b = packetPx[px - delta].b / 255.0f;
X++;
}
ESP_LOGW("Mapping[ P > W ]", "startIdx[ %d ] packetIdx[ %d ] mapping: packetPx[ 0 ] to localPx[ %d ] Wrote pixels#[ %d ]", startIdx, packetStartIdx, packetStartIdx-startIdx, X);
} else if (packetStartIdx < startIdx) {
// ESP_LOGW("Mapping[ P < W ]", "startIdx[ %d ] packetIdx[ %d ] mapping: localPx[ 0 ] to packetPx[ 0 ]", startIdx, packetStartIdx, );
ESP_LOGE("Mapping[ P < W ]", "NotImplementedYet");
}
/*
P = 5;
W = 10;
delta = W - P; // 5
for I = 0; I < __; i++:
leds[I] = packet[I + delta];
*/
requestBufferSwap();
uint16_t delta = startIdx - packetStartIdx;
// Packet does not contain any pixels for us
if (packetPxs < delta) return; // TODO: '<' or '<=' ??
uint8_t X = 0;
for (uint16_t px = 0; px < std::min(leds, (uint16_t)(packetPxs - delta)); px++) {
buffer1[px].r = packetPx[px + delta].r / 255.0f;
buffer1[px].g = packetPx[px + delta].g / 255.0f;
buffer1[px].b = packetPx[px + delta].b / 255.0f;
X++;
ESP_LOGW("Mapping[ P < W ]", "__MAP__[ W[ %d ] <-- P[ %d ] ]", px, px+delta);
}
ESP_LOGW("Mapping[ P < W ]", "startIdx[ %d ] packetIdx[ %d ] mapping: packetPx[ 0 ] to localPx[ %d ] Wrote pixels#[ %d ]", startIdx, packetStartIdx, startIdx-packetStartIdx, X);
}
}
void FxCyanRGB8::registerAtCyanBus(CyanBus::CyanBus& cyanBus) {
......@@ -123,6 +157,7 @@ namespace SiliconTorch {
qthing::addUDPPacketCallback(HEADER, [&, headerLength](qthing::udpPacket packet) {
this->handlePacket((uint8_t*)(packet.payload + headerLength), packet.length - headerLength);
requestBufferSwap();
});
}
}
......
......@@ -18,6 +18,11 @@ host = sys.argv[1]
print(f'Using host[ {host} ]')
startIdx = 0
if len(sys.argv) > 2: startIdx = int(sys.argv[2])
print(f'Using startIdx[ {startIdx} ]')
def sendRaw(data: bytes, _socket = socket(AF_INET, SOCK_DGRAM)):
try:
_socket.sendto(data, (host, port))
......@@ -27,16 +32,39 @@ def sendRaw(data: bytes, _socket = socket(AF_INET, SOCK_DGRAM)):
class RGB:
def __init__(self, r: int = 0, g: int = 0, b: int = 0):
self.r = r
self.g = g
self.b = b
self.r = int(r)
self.g = int(g)
self.b = int(b)
def __mul__(self, other: float):
other = float(other)
return RGB (
self.r * other,
self.g * other,
self.b * other
)
def __rmul__(self, other: float):
return self.__mul__(other)
def __imul__(self, other: float):
other = float(other)
self.r = int(self.r * other)
self.g = int(self.g * other)
self.b = int(self.b * other)
return self
def toBytes(self):
return struct.pack('BBB', self.r, self.g, self.b)
def __repr__(self):
return f'RGB({self.r}, {self.g}, {self.b})'
def sendPacket(startIdx: int = 0, pixel: list = [], header: bytes = b'fxCyanRGB8'):
def sendPacket(startIdx: int = startIdx, pixel: list = [], header: bytes = b'fxCyanRGB8'):
data = header + struct.pack('>H', startIdx)
for px in pixel:
......@@ -53,21 +81,35 @@ if __name__ == '__main__':
green = RGB( 0, 255, 0)
blue = RGB( 0, 0, 255)
yellow = RGB(255, 255, 0)
cyan = RGB(0, 255, 255)
violet = RGB(255, 0, 255)
pixels = [
white,
red, green, blue,
white
red,
RGB(255, 80, 0),
yellow,
RGB(80, 255, 0),
green,
cyan,
blue,
violet
]
pixels = [ px * 0.2 for px in pixels ]
FullHour = [
red,
green,
blue
]
sendPacket(pixel=[black]*8)
fh = 0
while True:
sendPacket(pixel=pixels + [FullHour[fh]])
sendPacket(pixel=pixels[:2])
# sendPacket(pixel=pixels + [FullHour[fh]] + [black, black])
fh += 1
if fh >= len(FullHour): fh = 0
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment