mini-led-cube/client/clcc.c
2012-01-11 19:02:37 +01:00

90 lines
2.1 KiB
C

/*
* CTHN.de MiniLEDCube
*
* By Kai Lauterbach (klaute at web dot de) 12/2011
*
* Based on http://mosfetkiller.de/?s=miniledcube
*
* License: General Public License (GPL v3)
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <usb.h>
#include <argtable2.h>
#include "globals.h"
#include "../firmware/globals.h"
// External functions to control the ledcube.
extern void lc_setFrame(unsigned long);
extern void lc_setMode(int);
extern int lc_saveFrame(unsigned long, int, int);
extern void lc_init(void);
extern void lc_close(void);
int main(int argc, char **argv)
{
lc_init();
if (argc == 2 && !strcmp((char*)argv[1], "--stop"))
{
printf("stop animation loop\n");
lc_setMode(MODE_ANIMATION_STOP);
}
else if (argc == 2 && !strcmp((char*)argv[1], "--loop"))
{
printf("starting animation loop\n");
lc_setMode(MODE_ANIMATION_LOOP);
}
else if (argc == 2 && !strcmp((char*)argv[1], "--single"))
{
printf("starting animation as single shot\n");
lc_setMode(MODE_ANIMATION_SINGLE);
}
else if (argc == 3 && !strcmp((char*)argv[1], "--view"))
{
lc_setMode(MODE_ANIMATION_STOP);
unsigned int frame = 0;
if ( sscanf((char*)argv[2], "0x%08x", &frame) )
{
printf("view frame: data=0x%08x\n", frame);
lc_setFrame(frame);
}
}
else if (argc == 5 && !strcmp((char*)argv[1], "--save"))
{
lc_setMode(MODE_ANIMATION_STOP);
// TODO parse commandline parameters
unsigned int pos = 0;
if ( sscanf((char*)argv[2], "%d", &pos) )
{
unsigned int delay = 0;
if ( sscanf((char*)argv[3], "%d", &delay) )
{
unsigned int frame = 0;
if ( sscanf((char*)argv[4], "0x%08x", &frame) )
{
printf("saving frame: index=%d delay=%d frame=0x%08x\n", pos, delay, frame);
//lc_setFrame(frame);
lc_saveFrame(frame, delay, pos);
}
}
}
}
lc_close();
return 0;
}