#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <usb.h>
#include "../firmware/globals.h"
Function Documentation
{
lc_setMode(MODE_ANIMATION_STOP);
unsigned long buf = 0;
int tmp = 0;
int tmp2 = 26;
for (tmp = 0; tmp < 32; tmp++)
{
if (tmp < 27)
buf = (1 << tmp);
else
{
tmp2--;
buf = (1 << tmp2);
}
lc_saveFrame(buf, tmp);
}
lc_setMode(MODE_ANIMATION_LOOP);
}
The close function.
- Returns:
- NOT_CONNECTED_ERROR or return state of the usb_close function.
The init function.
- Returns:
- SUCCESSFULLY_CONNECTED or DEVICE_NOT_FOUND_ERROR.
{
usb_init();
_lc_vid = _lc_rawVid[1] * 256 + _lc_rawVid[0];
_lc_pid = _lc_rawPid[1] * 256 + _lc_rawPid[0];
if( usbOpenDevice( &_lc_handle, _lc_vid, _lc_vendor, _lc_pid, _lc_product, NULL, NULL, NULL) != 0)
{
fprintf(stderr, "Could not find USB device \"%s\" with lc_vid=0x%x lc_pid=0x%x\n", _lc_product, _lc_vid, _lc_pid);
return DEVICE_NOT_FOUND_ERROR;
}
return SUCCESSFULLY_CONNECTED;
}
void lc_saveFrame |
( |
unsigned |
long, |
|
|
int |
|
|
) |
| |
void lc_setFrame |
( |
unsigned long |
frame | ) |
|
The setFrame function.
- Parameters:
-
frame | The 32bit frame data. Bit 0-8 equals layer one; bit 9 - 17 euqals layer two; bit 18 - 26 equals layer three. the 5 MSB is the lifetime of the current frame in ISR calls (300Hz). |
- Returns:
- NOT_CONNECTED_ERROR or the return value of the usb_control_msg function.
{
if (_lc_handle == NULL)
return NOT_CONNECTED_ERROR;
int low = frame & 0xffff;
int high = (frame & 0xffff0000) >> 16;
int ret = usb_control_msg(_lc_handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, CUSTOM_RQ_SET_FRAME, low, 0, _lc_buffer, 0, 300);
ret += usb_control_msg(_lc_handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, CUSTOM_RQ_SET_FRAME, high, 1, _lc_buffer, 0, 300);
return ret;
}
void lc_setMode |
( |
int |
mode | ) |
|
The setMode function.
- Parameters:
-
mode | The firmware mode. MODE_ANIMATION_STOP; MODE_ANIMATION_SINGLE; MODE_ANIMATION_LOOP |
- Returns:
- NOT_CONNECTED_ERROR or the return value of the usb_control_msg function.
int main |
( |
int |
argc, |
|
|
char ** |
argv |
|
) |
| |
{
lc_setMode(MODE_ANIMATION_STOP);
int j = max;
while (--j)
{
int i = 0;
int k = 0;
for (i = 0; i < 360; i++)
{
double d = cos((double)((6.28*i)/360)) + 1;
unsigned long tmp = (1 << (int)((27 * d) / 2));
lc_setFrame(tmp);
usleep(2500);
k++;
}
}
}