Skip to content
Snippets Groups Projects
Commit 8028ceb0 authored by ftomi's avatar ftomi
Browse files

Ola test

parent d808720f
No related branches found
No related tags found
No related merge requests found
...@@ -5,13 +5,17 @@ ...@@ -5,13 +5,17 @@
"includePath": [ "includePath": [
"${workspaceFolder}", "${workspaceFolder}",
"c:\\MinGW\\include", "c:\\MinGW\\include",
"d:\\_work\\SEM\\WiringPi\\wiringPi" "d:\\_work\\SEM\\WiringPi\\wiringPi",
"d:\\_work\\SEM\\ola",
"d:\\_work\\SEM\\ola\\include"
], ],
"browse": { "browse": {
"path": [ "path": [
"${workspaceFolder}", "${workspaceFolder}",
"c:\\MinGW\\include", "c:\\MinGW\\include",
"d:\\_work\\SEM\\WiringPi\\wiringPi" "d:\\_work\\SEM\\WiringPi\\wiringPi",
"d:\\_work\\SEM\\ola",
"d:\\_work\\SEM\\ola\\include"
] ]
}, },
"defines": ["_POSIX_C_SOURCE"], "defines": ["_POSIX_C_SOURCE"],
......
...@@ -6,6 +6,7 @@ DEBUG = -g ...@@ -6,6 +6,7 @@ DEBUG = -g
PROJECT = minimatrixrpi PROJECT = minimatrixrpi
COMPONENTS = animation mxframe spiframe spisender e131 matrix_server COMPONENTS = animation mxframe spiframe spisender e131 matrix_server
COMPONENTS_O = $(addsuffix .o,$(COMPONENTS)) COMPONENTS_O = $(addsuffix .o,$(COMPONENTS))
LIBS = -lwiringPi `pkg-config --cflags --libs libola`
all: $(PROJECT) all: $(PROJECT)
...@@ -28,7 +29,7 @@ $(PROJECT).o: $(PROJECT).cpp ...@@ -28,7 +29,7 @@ $(PROJECT).o: $(PROJECT).cpp
$(CC) -c $(DEBUG) $< $(CC) -c $(DEBUG) $<
$(PROJECT): $(PROJECT).o $(COMPONENTS_O) $(PROJECT): $(PROJECT).o $(COMPONENTS_O)
$(CC) $^ -lwiringPi $(DEBUG) -o $@ $(CC) $^ $(LIBS) $(DEBUG) -o $@
chmod +x $(PROJECT) chmod +x $(PROJECT)
clean: clean:
......
...@@ -6,30 +6,85 @@ ...@@ -6,30 +6,85 @@
#include "matrix_server.h" #include "matrix_server.h"
#include <unistd.h> #include <unistd.h>
#include <stdio.h> #include <stdio.h>
#include <ola/DmxBuffer.h>
#include <ola/Logging.h>
#include <ola/client/ClientWrapper.h>
#include <string>
int main(int argc, char *argv[]) // int main(int argc, char *argv[])
// {
// MatrixServer server;
// SpiSender spisender;
// printf("Started\n");
// while (1)
// {
// if (server.receive())
// {
// spisender.sendFrame(SpiFrame(server.getFrame()));
// }
// }
// // Animation anim;
// // anim.openFile("bss.qp4");
// // MxFrame frame;
// // SpiSender spisender;
// // while (!anim.eof())
// // {
// // frame = anim.nextFrame();
// // spisender.sendFrame(SpiFrame(frame));
// // usleep(1000*frame.length);
// // }
// // spisender.sendFrame(SpiFrame(MxFrame()));
// return 0;
// }
//MatrixServer server;
SpiSender* spisender = new SpiSender();
static const unsigned int UNIVERSE = 0;
// Called when universe registration completes.
void RegisterComplete(const ola::client::Result &result)
{ {
MatrixServer server; if (!result.Success())
SpiSender spisender;
printf("Started\n");
while (1)
{ {
if (server.receive()) OLA_WARN << "Failed to register universe: " << result.Error();
}
}
// Called when new DMX data arrives.
void NewDmx(const ola::client::DMXMetadata &metadata,
const ola::DmxBuffer &data)
{
MxFrame frame;
const uint8_t* arr = data.GetRaw();
int k = 0;
for (size_t i = 0; i < 2; i++)
{
for (size_t j = 0; j < 32; j++)
{ {
spisender.sendFrame(SpiFrame(server.getFrame())); frame.pixels[i][j].r = arr[k];
frame.pixels[i][j].g = arr[k+1];
frame.pixels[i][j].b = arr[k+2];
k += 3;
} }
} }
spisender->sendFrame(SpiFrame(frame));
}
// Animation anim; int main()
// anim.openFile("bss.qp4"); {
// MxFrame frame;
// SpiSender spisender; printf("Started\n");
// while (!anim.eof())
// { ola::InitLogging(ola::OLA_LOG_INFO, ola::OLA_LOG_STDERR);
// frame = anim.nextFrame(); ola::client::OlaClientWrapper wrapper;
// spisender.sendFrame(SpiFrame(frame)); if (!wrapper.Setup())
// usleep(1000*frame.length); exit(1);
// } ola::client::OlaClient *client = wrapper.GetClient();
// spisender.sendFrame(SpiFrame(MxFrame())); // Set the callback and register our interest in this universe
return 0; client->SetDMXCallback(ola::NewCallback(&NewDmx));
client->RegisterUniverse(
UNIVERSE, ola::client::REGISTER,
ola::NewSingleCallback(&RegisterComplete));
wrapper.GetSelectServer()->Run();
delete spisender;
} }
...@@ -26,7 +26,7 @@ SpiSender::~SpiSender() ...@@ -26,7 +26,7 @@ SpiSender::~SpiSender()
bool SpiSender::sendFrame(const SpiFrame &frame) const bool SpiSender::sendFrame(const SpiFrame &frame) const
{ {
while (!canSend()); if (!canSend()) return false;
uint8_t dummy = 0; uint8_t dummy = 0;
wiringPiSPIDataRW(SPI_CHANNEL, (uint8_t*)frame.data, 64*24*2); wiringPiSPIDataRW(SPI_CHANNEL, (uint8_t*)frame.data, 64*24*2);
wiringPiSPIDataRW(SPI_CHANNEL, &dummy, 1); wiringPiSPIDataRW(SPI_CHANNEL, &dummy, 1);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment