/*---------------------------------------------------------------------------*/ void leds_arch_set(unsigned char leds) { #if DISCOVERY GPIO_WRITE_PIN(GPIO_C_BASE, LEDS_GPIO_PIN_MASK, leds); #else//DISCOVERY GPIO_WRITE_PIN(GPIO_B_BASE, LEDS_GPIO_PIN_MASK, leds); #endif//DISCOVERY }
/*---------------------------------------------------------------------------*/ int led_strip_switch(uint8_t val) { if(!initialized) { return LED_STRIP_ERROR; } if(val != LED_STRIP_ON && val != LED_STRIP_OFF) { return LED_STRIP_ERROR; } /* Set the LED to ON or OFF */ GPIO_WRITE_PIN(LED_STRIP_PORT_BASE, LED_STRIP_PIN_MASK, val); return val; }
static void send_frame(int fileDescriptor, uint8_t txbuf[], int buffsize) { #ifdef OLIMEX ////("olimex sendframe \n"); // GPIO 65 = LED // GPIO 20 = SSP2_MOSI = LED DATA = OL Micro CON2 pin 10 = OL Maxi UEXT pin 8 // GPIO 24 = SSP2_SCK = LED CLOCK = OL Micro CON2 pin 11 = OL Maxi UEXT pin 9 GPIO_WRITE_PIN(65,1); uint8_t i, j, v, b; for (i=0; i<buffsize; i++) { v = txbuf[i]; b = 0x80; for (j=0; j<bits; j++) { GPIO_WRITE_PIN(20,v&b); b >>= 1; GPIO_WRITE_PIN(24,1); GPIO_WRITE_PIN(24,0); } } GPIO_WRITE_PIN(65,0); #else int ret; int j = 0; int offset; uint8_t rx[385] = { 0, }; struct spi_ioc_transfer tr = { .tx_buf = (unsigned long)txbuf, .rx_buf = (unsigned long)rx, .len = buffsize, .delay_usecs = delay, .speed_hz = speed, .bits_per_word = bits, }; //////("buffsize %d\n", buffsize); ret = ioctl(fileDescriptor, SPI_IOC_MESSAGE(1), &tr); if (ret < 1) pabort("can't send spi message"); #endif } //move to lightnames.c? int set_to_canonical(int outer, int face, int row, int col) { // Need to check for out-of-bounds here, but meh. // outer? face row col int outermap[NUM_FACES][ROWS_PER_FACE][COLS_PER_FACE] = { /* 1 3 0 0 */ CANONICAL_OUTER_RIGHT_POSTERIOR_TOP /* 1 3 0 1 */ ,CANONICAL_OUTER_RIGHT_POSTERIOR_CENTER /* 1 3 0 2 */ ,CANONICAL_OUTER_RIGHT_POSTERIOR_BOTTOM /* 1 3 1 0 */ ,CANONICAL_OUTER_RIGHT_CENTER_TOP /* 1 3 1 1 */ ,CANONICAL_OUTER_RIGHT_CENTER_CENTER /* 1 3 1 2 */ ,CANONICAL_OUTER_RIGHT_CENTER_BOTTOM /* 1 3 2 0 */ ,CANONICAL_OUTER_RIGHT_FRONT_TOP /* 1 3 2 1 */ ,CANONICAL_OUTER_RIGHT_FRONT_CENTER /* 1 3 2 2 */ ,CANONICAL_OUTER_RIGHT_FRONT_BOTTOM /* 1 2 0 0 */ ,CANONICAL_OUTER_BOTTOM_POSTERIOR_RIGHT /* 1 2 0 1 */ ,CANONICAL_OUTER_BOTTOM_POSTERIOR_CENTER /* 1 2 0 2 */ ,CANONICAL_OUTER_BOTTOM_POSTERIOR_LEFT /* 1 2 1 0 */ ,CANONICAL_OUTER_BOTTOM_CENTER_RIGHT /* 1 2 1 1 */ ,CANONICAL_OUTER_BOTTOM_CENTER_CENTER /* 1 2 1 2 */ ,CANONICAL_OUTER_BOTTOM_CENTER_LEFT /* 1 2 2 0 */ ,CANONICAL_OUTER_BOTTOM_FRONT_RIGHT /* 1 2 2 1 */ ,CANONICAL_OUTER_BOTTOM_FRONT_CENTER /* 1 2 2 2 */ ,CANONICAL_OUTER_BOTTOM_FRONT_LEFT /* 1 1 0 0 */ ,CANONICAL_OUTER_LEFT_POSTERIOR_BOTTOM /* 1 1 0 1 */ ,CANONICAL_OUTER_LEFT_POSTERIOR_CENTER /* 1 1 0 2 */ ,CANONICAL_OUTER_LEFT_POSTERIOR_TOP /* 1 1 1 0 */ ,CANONICAL_OUTER_LEFT_CENTER_BOTTOM /* 1 1 1 1 */ ,CANONICAL_OUTER_LEFT_CENTER_CENTER /* 1 1 1 2 */ ,CANONICAL_OUTER_LEFT_CENTER_TOP /* 1 1 2 0 */ ,CANONICAL_OUTER_LEFT_FRONT_BOTTOM /* 1 1 2 1 */ ,CANONICAL_OUTER_LEFT_FRONT_CENTER /* 1 1 2 2 */ ,CANONICAL_OUTER_LEFT_FRONT_TOP /* 1 0 0 0 */ ,CANONICAL_OUTER_TOP_POSTERIOR_LEFT /* 1 0 0 1 */ ,CANONICAL_OUTER_TOP_POSTERIOR_CENTER /* 1 0 0 2 */ ,CANONICAL_OUTER_TOP_POSTERIOR_RIGHT /* 1 0 1 0 */ ,CANONICAL_OUTER_TOP_CENTER_LEFT /* 1 0 1 1 */ ,CANONICAL_OUTER_TOP_CENTER_CENTER /* 1 0 1 2 */ ,CANONICAL_OUTER_TOP_CENTER_RIGHT /* 1 0 2 0 */ ,CANONICAL_OUTER_TOP_FRONT_LEFT /* 1 0 2 1 */ ,CANONICAL_OUTER_TOP_FRONT_CENTER /* 1 0 2 2 */ ,CANONICAL_OUTER_TOP_FRONT_RIGHT }; int innermap[NUM_FACES][BULBS_INSIDE] = { /* 0 0 3 */ CANONICAL_INNER_RIGHT_POSTERIOR_TOP /* 0 0 1 */ ,CANONICAL_INNER_RIGHT_FRONT_TOP /* 0 0 2 */ ,CANONICAL_INNER_RIGHT_POSTERIOR_BOTTOM /* 0 0 0 */ ,CANONICAL_INNER_RIGHT_FRONT_BOTTOM /* 0 0 3 */ ,CANONICAL_INNER_BOTTOM_POSTERIOR_RIGHT /* 0 0 1 */ ,CANONICAL_INNER_BOTTOM_FRONT_RIGHT /* 0 0 2 */ ,CANONICAL_INNER_BOTTOM_POSTERIOR_LEFT /* 0 0 0 */ ,CANONICAL_INNER_BOTTOM_FRONT_LEFT /* 0 0 3 */ ,CANONICAL_INNER_LEFT_POSTERIOR_BOTTOM /* 0 0 1 */ ,CANONICAL_INNER_LEFT_FRONT_BOTTOM /* 0 0 2 */ ,CANONICAL_INNER_LEFT_POSTERIOR_TOP /* 0 0 0 */ ,CANONICAL_INNER_LEFT_FRONT_TOP /* 0 0 3 */ ,CANONICAL_INNER_TOP_POSTERIOR_LEFT /* 0 0 1 */ ,CANONICAL_INNER_TOP_FRONT_LEFT /* 0 0 2 */ ,CANONICAL_INNER_TOP_POSTERIOR_RIGHT /* 0 0 0 */ ,CANONICAL_INNER_TOP_FRONT_RIGHT }; if(outer) { return outermap[face][row][col]; } else { return innermap[face][row]; } }
/*---------------------------------------------------------------------------*/ void leds_arch_set(unsigned char leds) { GPIO_WRITE_PIN(GPIO_C_BASE, LEDS_GPIO_PIN_MASK, leds); }
// turn off all segments and dp of a digit void initialise_digit(const digit ldigit) { for ( int x = 0; x < item_count; x++) { GPIO_WRITE_PIN(ldigit[x],0); } }