CTHN.de - LEDCube - commandline client
Defines | Functions | Variables
ledcube.h File Reference
#include <stdio.h>
#include <usb.h>
#include "opendevice.h"
#include "../firmware/globals.h"
#include "../firmware/requests.h"
#include "../firmware/usbconfig.h"
Include dependency graph for ledcube.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Defines

#define NOT_CONNECTED_ERROR   -1
#define DEVICE_NOT_FOUND_ERROR   -2
#define SUCCESSFULLY_CONNECTED   1

Functions

int lc_setFrame (unsigned long)
 The setFrame function.
int lc_setMode (int)
 The setMode function.
int lc_saveFrame (unsigned long, int, int)
 The saveFrame function.
int lc_init (void)
 The init function.
int lc_close (void)
 The close function.

Variables

usb_dev_handle * _lc_handle = NULL
const unsigned char _lc_rawVid [2] = {USB_CFG_VENDOR_ID}
const unsigned char _lc_rawPid [2] = {USB_CFG_DEVICE_ID}
char _lc_vendor [] = {USB_CFG_VENDOR_NAME, 0}
char _lc_product [] = {USB_CFG_DEVICE_NAME, 0}
char _lc_buffer [4]
int _lc_vid
int _lc_pid

Define Documentation

#define DEVICE_NOT_FOUND_ERROR   -2
#define NOT_CONNECTED_ERROR   -1
#define SUCCESSFULLY_CONNECTED   1

Function Documentation

int lc_close ( void  )

The close function.

Returns:
NOT_CONNECTED_ERROR or return state of the usb_close function.
{
    if (_lc_handle == NULL)
        return NOT_CONNECTED_ERROR;

    return usb_close(_lc_handle);

}
int lc_init ( void  )

The init function.

Returns:
SUCCESSFULLY_CONNECTED or DEVICE_NOT_FOUND_ERROR.
{

    usb_init();

    /* compute lc_vid/lc_pid from usbconfig.h so that there is a central source of information */
    _lc_vid = _lc_rawVid[1] * 256 + _lc_rawVid[0];
    _lc_pid = _lc_rawPid[1] * 256 + _lc_rawPid[0];

    /* The following function is in opendevice.c: */
    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;
}

Here is the call graph for this function:

int lc_saveFrame ( unsigned long  frame,
int  delay,
int  index 
)

The saveFrame function.

Parameters:
frameThe 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) multiplied by 8.
deayThe lifetime (onyl 5 bits) of the given frame in ISR calls multiplied by 8.
indexThe position in the EEPROM (0 to 31) of the internal animation content.
Returns:
NOT_CONNECTED_ERROR or the return value of the usb_control_msg function.
{
    if (_lc_handle == NULL)
        return NOT_CONNECTED_ERROR;

    frame = frame + (delay << 27);

    lc_setFrame(frame);

    return usb_control_msg(_lc_handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, CUSTOM_RQ_EEPROM_STORE_FRAME, 0, index, _lc_buffer, 0, 300);
}

Here is the call graph for this function:

int lc_setFrame ( unsigned long  frame)

The setFrame function.

Parameters:
frameThe 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;
}
int lc_setMode ( int  mode)

The setMode function.

Parameters:
modeThe 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.
{
    if (_lc_handle == NULL)
        return NOT_CONNECTED_ERROR;

    return usb_control_msg(_lc_handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, CUSTOM_RQ_SET_MODE, mode, 0, _lc_buffer, 0, 300);
}

Variable Documentation

char _lc_buffer[4]
usb_dev_handle* _lc_handle = NULL
int _lc_pid
char _lc_product[] = {USB_CFG_DEVICE_NAME, 0}
const unsigned char _lc_rawPid[2] = {USB_CFG_DEVICE_ID}
const unsigned char _lc_rawVid[2] = {USB_CFG_VENDOR_ID}
char _lc_vendor[] = {USB_CFG_VENDOR_NAME, 0}
int _lc_vid
 All Files Functions Variables Defines