colorchord/colorchord2/outdrivers.h

47 lines
1 KiB
C
Raw Normal View History

2015-07-29 07:56:18 +02:00
//Copyright 2015 <>< Charles Lohr under the ColorChord License.
//Output drivers, used for outputting lights, etc... However, this technique
//may be used for unrelated-to-output plugins.
2015-01-07 04:51:39 +01:00
#ifndef _OUTDRIVERS_H
#define _OUTDRIVERS_H
#include "os_generic.h"
struct NoteFinder;
#define MAX_LEDS 32678
2015-06-26 23:00:04 +02:00
extern int force_white;
extern unsigned char OutLEDs[MAX_LEDS*3];
extern int UsedLEDs;
2015-01-07 04:51:39 +01:00
#define MAX_OUT_DRIVERS 64
#define MAX_OUT_DRIVER_STRING 1024
struct OutDriverListElem
{
const char * Name;
struct DriverInstances * (*Init)();
};
struct DriverInstances
{
void * id;
void (*Func)(void * id, struct NoteFinder* nf );
void (*Params)(void * id);
};
extern struct OutDriverListElem ODList[MAX_OUT_DRIVERS];
extern const char OutDriverParameters[MAX_OUT_DRIVER_STRING];
//Pass setup "name=[driver]"
struct DriverInstances * SetupOutDriver( );
void RegOutDriver( const char * ron, struct DriverInstances * (*Init)( ) );
#define REGISTER_OUT_DRIVER( name ) \
void REGISTER##name() __attribute__((constructor)) { RegOutDriver( #name, name ); }
2015-01-07 04:51:39 +01:00
#endif