I try to stream one imp ADC sampler data to other imp and output streamed data to fixed-frequency DAC.
But still have no success, so I post code here - may be some have thoughts is it possible at all or what is wrong with code ,posted below.
IMP-1 (streaming out)
Agent code
stream <- null;
local data;
device.on(“bufferReady”, function (s){
local sendByffer;
local url = “https://agent.electricimp.com/XXXXXXXX”;
local headers = {“Content-Type”:“application/x-www-form-urlencoded”};
local stream = http.poststream(url, headers, function(gogo){ server.log(“Sent”); });
stream.send(http.urlencode({sendByffer = s}));
});
IMP-1
Device code
function OKsampled(buffer, length) {
if (length > 0) {
agent.send(“bufferReady”, buffer);
server.log(“Buffer " + length + " bytes”);
} else {
server.error(“Overrun”);
}
}
buffer1 <- blob(15000); //for 3 pins ->5KHz, 500ms
buffer2 <- blob(15000);
buffer3 <- blob(15000);
hardware.sampler.configure([hardware.pin5, hardware.pin7, hardware.pin9], 5000, [buffer1, buffer2, buffer3], OKsampled, A_LAW_COMPRESS);
hardware.sampler.start();
IMP-2 (receiving)
Agent code
writeBuffer <- blob(15000);
function requestHandler(request, response) {
device.on(“more_data_please”, function(nbuffers) {
local buffer = [writeBuffer(), writeBuffer(), writeBuffer(), writeBuffer()];
if (buffer != 0) {
device.send(“more_data”, buffer);
}
});
}
http.onrequest(requestHandler);
IMP-2
Device code
buffer1 <- blob(15000);
buffer2 <- blob(15000);
buffer3 <- blob(15000);
local pin = hardware.pin1;
function bufferEmpty(buffer) {
server.log(“bufferEmpty() called”);
if (!buffer) {
server.log("Warning: buffer underrun");
return;
}
agent.send("more_data_please", 1);
}
hardware.fixedfrequencydac.configure(pin, 5000, [buffer1, buffer2, buffer3], bufferEmpty, A_LAW_DECOMPRESS);
hardware.fixedfrequencydac.start();
agent.on(“more_data”, function(buffer) {
server.log(“Received more data”);
hardware.fixedfrequencydac.addbuffer(buffer);
});