Example #1
0
void main_final(void) {
    init_nick();
	if(GLOBAL(privacy)>2){ //firstboot
        if(execute_file("1boot.int",0,0)){
            lcdPrintln("Badge SETUP");
            lcdPrintln("error.");
            lcdPrintln("Features may");
            lcdPrintln("be broken.");
            lcdRefresh();
            getInputWait();
            getInputWaitRelease();
            GLOBAL(privacy)=0;
        }else{
            saveConfig();
        };
    };
    //checkFirstBoot();
    init_final();
    menuflags|=MENU_TIMEOUT;

    while(1){
#ifndef FINAL
        if(getInputRaw()==BTN_LEFT)
            ISPandReset();
#endif
        if(getInput()){
            handleMenu(&mainmenu);
            getInputWaitRelease();
            init_nick();
        };
        work_queue();
        fancyNickname();
    };
};
Example #2
0
/** reaction.c
 *  First l0dable for my r0ket
 *  Improvement is welcome
 *
 * AUTHOR: hubba
*/
void ram(void)
{
    char x = gpioGetValue(RB_LED1);
    int rand_wait = 0;
    int react_time=0;
    int start_time = 0;
    int end_time = 0;

    gpioSetValue (RB_LED1,0);           //upperleft LED off
    lcdClear();
    lcdPrintln("Hello");
    lcdPrintln(GLOBAL(nickname));
    lcdPrintln("ReACTION");
    lcdRefresh();
    delayms(500);
    while(1)
    {
        react_time = 0;
        lcdPrintln("Press ENTER if ");
        lcdPrintln("LED is on!");
        lcdRefresh();
        rand_wait = getRandom();
        rand_wait = rand_wait%50;
        rand_wait = 40 + rand_wait*4;        // Minimum pause time is 400ms
        for(int i =0; i<=rand_wait; i++)     //directly calling delayms(rand_wait) didn't work
        {
            delayms(10);
        }
        gpioSetValue (RB_LED1, 1);          //upperleft LED ON
        getInputWaitRelease();
        start_time = getTimer()*(SYSTICKSPEED);
        while (getInputWait() != BTN_ENTER);    //wait for user input
        {

        }
        end_time =  getTimer()*(SYSTICKSPEED);
        react_time = end_time - start_time;     //measure  used time
        lcdClear();
        lcdPrint("Needed ");
        lcdPrintInt(react_time);
        lcdPrintln(" ms");
        lcdPrintln("DOWN: Exit");
        lcdPrintln("0ther: New game");
        lcdRefresh();
        gpioSetValue (RB_LED1,0);           //upperleft LED off

        getInputWaitRelease();
        if(getInputWait() ==  BTN_DOWN)     //Check for Exit/new game
        {
            gpioSetValue (RB_LED1, x);      //upperleft LED as before l0dable executed
            return;
        }
    }
    /* NEVER LAND HERE */
    lcdPrintln("Flow-Error");
    lcdRefresh();
    return;
};
Example #3
0
void msc_menu(void){
    MSCenable();
    lcdPrintln("MSC enabled.");
    lcdDisplay();
    getInputWaitRelease();
    getInputWait();
    lcdPrintln("disconnect");
    lcdDisplay();
    MSCdisable();
    fsReInit();
    getInputWaitRelease();
}
Example #4
0
//# MENU nick chooseAnim
void doAnim(void){
    getInputWaitRelease();
    if( selectFile(GLOBAL(nickl0),"N1K") != 0){
        lcdPrintln("No file selected.");
        GLOBAL(l0nick)=0;
        return;
    };
	writeFile("l0nick.cfg",GLOBAL(nickl0),strlen(GLOBAL(nickl0)));
    GLOBAL(l0nick)=1;
    saveConfig();
    getInputWaitRelease();
}
Example #5
0
//# MENU led
void led_menu(){
	getInputWaitRelease();

	uint8_t leds=0;
	uint8_t adc=0;
	while(1){
		lcdClear();
		lcdPrintln("LED:");
		lcdPrintln("");
		lcdPrintln("U Toggle LEDs");
		lcdPrintln("D Toggle ADC");
		lcdPrintln("");
		lcdDisplay();
		switch(getInput()){
			case BTN_UP:
				adc=0;
				leds=1-leds;
				SETUPgout(LED4);
				if(leds){
					ON(LED1);
					ON(LED2);
					ON(LED3);
					ON(LED4);
				}else{
					OFF(LED1);
					OFF(LED2);
					OFF(LED3);
					OFF(LED4);
				};
				break;
			case BTN_DOWN:
				adc=1;
				SETUPadc(LED4);
				break;
			case BTN_ENTER:
				SETUPgout(LED1);
				SETUPgout(LED2);
				SETUPgout(LED3);
				SETUPgout(LED4);
				return;
		};
		if(adc){
			lcdPrint("LED4: ");
			lcdPrint(IntToStr(adc_get_single(ADC0,ADC_CR_CH6)*2*330/1023,4,F_LONG));
			lcdNl();
			lcdDisplay();
		};
		getInputWaitRelease();
	};
};
Example #6
0
uint8_t lcdShowAnim(char *fname) {
    FIL file;            /* File object */
	int res;
    UINT readbytes;
	uint8_t state=0;
    uint16_t framems=0;

	res=f_open(&file, fname, FA_OPEN_EXISTING|FA_READ);
	if(res != FR_OK)
		return 1;

	getInputWaitRelease();
	while(!getInputRaw()){
		res = f_read(&file, &framems, sizeof(framems), &readbytes);
        /*
        lcdPrint("ms=");lcdPrintln(IntToStr(framems,4,0));
        lcdPrint("off=");lcdPrintln(IntToStr(f_tell(&file),4,0));
        */
        if(res != FR_OK)
            return 1;
		if(readbytes<sizeof(framems)){
			f_lseek(&file,0);
            continue;
        };
        lcdShowImage(&file);
        getInputWaitTimeout(framems);
	}

    return 0;
}
Example #7
0
static bool screen_intro() {
	uint32_t highscore;
	char highnick[20];
	char key=0;
	bool step = false;
	//getInputWaitRelease();
	while(key==0) {
		getInputWaitRelease();
		lcdFill(0);
		font = &Font_Invaders;
        DoString(28,25,step?"ABC":"abc");
		font = &Font_7x8;
		DoString (28,40,"SPACE");
		DoString (18,50,"INVADERS");
		
		highscore = highscore_get(highnick);
		DoInt(0, 0, highscore);
		DoString (0, 9, highnick);
		lcdDisplay();
		step = !step;
		key=getInputWaitTimeout(1000);
	}
	//getInputWaitRelease();
	return !(key==BTN_LEFT);
}
Example #8
0
int main(void) {
	cpuClockInit(); /* CPU Clock is now 104 MHz */
	ssp_clock_init();
	systickInit();

//	cpu_clock_set(204);

	SETUPgout(EN_VDD);
	SETUPgout(MIXER_EN);
	SETUPgout(MIC_AMP_DIS);

	SETUPgout(LED1);
	SETUPgout(LED2);
	SETUPgout(LED3);
	SETUPgout(LED4);

	inputInit();
	lcdInit();
	fsInit(); 
	lcdFill(0xff);
	readConfig();

	generated_init();

	while(1) {
        handleMenu(&menu_main);
        getInputWaitRelease();
	}
	return 0;
}
Example #9
0
File: jump.c Project: Bediko/r0ket
static void splash_scene() {
	uint32_t highscore;
	char highnick[20];

	char key = 0;
	while(key == 0) {
		getInputWaitRelease();

		int dy = getFontHeight();
		int s1x = DoString(0, 0, "r0ket");
		s1x = (RESX-s1x)/2;
		int s2x = DoString(0, 0, "JUMP!");
		s2x = (RESX-s2x)/2;

		lcdFill(0);
		
		DoString(s1x, 3*dy, "r0ket");
		DoString(s2x, 4*dy, "JUMP!");
		DoString(0, 7*dy, "by webholics");

		highscore = highscore_get(highnick);

		int s3x = DoInt(0, 0, highscore);
		DoChar(s3x, 0, 'm');
		DoString (0, dy, highnick);

		lcdDisplay();

		key = getInputWaitTimeout(1000);
	}
}
Example #10
0
//# MENU MSC
void msc_menu(){
	MSCenable();
	lcdPrintln("MSC enabled.");
	getInputWaitRelease();
	while(getInputRaw()!=BTN_ENTER){
		if(getInputRaw()==BTN_RIGHT)
			lcdPrintln(".");
		lcdDisplay();
		__WFI();
	};
	lcdPrintln("disconnect");
	lcdDisplay();
	MSCdisable();
	fsReInit();
	getInputWaitRelease();
};
Example #11
0
static int showHighscore()
{
    int key = getInputRaw();

    renderHighscore();

    if (points>highscore) {
        // Save highscore if higher
        highscore_set(points);
    }

    while(1) {
        key = getInputWait();
        getInputWaitRelease();

        if (key&BTN_DOWN) {
            return 1;
        } else if (key&BTN_UP) {
            return 0;
        } else if (key&BTN_RIGHT) {
            highscore = 0;
            highscore_set(highscore);
            setTextColor(0xff,0b00000011);
            DoString(RESX/2-4, RESY/2-2, IntToStr(highscore,6,0));
        }

        renderHighscore();
    }
}
Example #12
0
void ram(void){
	bool again = true;
    FIL file;
	menuflags|=(MENU_JUSTONCE|MENU_BIG);
	screen_intro();
	while (again) {
        color_set = false;

        if( f_open(&file, "yell0w", FA_OPEN_EXISTING|FA_READ) == 0 ){
            yellow();
            color_set = true;
        }

        if( f_open(&file, "green", FA_OPEN_EXISTING|FA_READ) == 0 ){
            yellow();
            color_set = true;
        }

		while (!color_set) {	
			handleMenu(&submenu_color);
		}

		privacy_set = false;
		while (!privacy_set) {	
			handleMenu(&submenu_privacy);
		}

    	input("Nickname?", GLOBAL(nickname), 32, 127, MAXNICK-1);
		getInputWaitRelease();
		again = screen_overview();
	}
	menuflags&= (~(MENU_JUSTONCE|MENU_BIG));
	writeFile("nick.cfg",GLOBAL(nickname),strlen(GLOBAL(nickname)));
	saveConfig();
}
Example #13
0
static bool screen_intro() {
	uint32_t highscore;
	char highnick[20];
	char key=0;
	bool step = false;
	//getInputWaitRelease();
	while(key==0) {
		getInputWaitRelease();
		lcdFill(0x00);
		setIntFont(&Font_Invaders);
    setTextColor(0x00,0b11100000);
    lcdSetCrsr(28+18,25+15);lcdPrint(step?"ABC":"abc");
		setIntFont(&Font_7x8);
    setTextColor(0x00,0b00011000);
		lcdSetCrsr(28+18,40+15);lcdPrint("SPACE");
    setTextColor(0x00,0b11111000);
		lcdSetCrsr(18+18,50+15);lcdPrint("INVADERS");

		highscore = highscore_get(highnick);
    setTextColor(0x00,0xff);
		lcdSetCrsr(0,0);lcdPrint(IntToStr(highscore,6,F_LONG));
//		lcdSetCrsr(0,9);lcdPrint(highnick);
		lcdDisplay();
		step = !step;
		key=getInputWaitTimeout(1000);
	}
	//getInputWaitRelease();
	return !(key==BTN_LEFT);
}
Example #14
0
//# MENU cpld
void cpld_menu(){
	getInputWaitRelease();
	SETUPgout(EN_1V8);
	ON(EN_1V8);
	delayNop(1000000); /* wait until cpld boot */
	cpu_clock_set(204);

	lcdClear();
	lcdPrintln("CPLD");
	lcdNl();
	lcdNl();
	bytes=0;
	lcdPrint(IntToStr(bytes,5,F_LONG));
	lcdPrint(" bytes...");
	lcdNl();

	#define WAIT_LOOP_DELAY (6000000)
	#define ALL_LEDS  (PIN_LED1|PIN_LED2|PIN_LED3)
	int i;
	int error;
	FRESULT res;

	res=f_open(&file, "cpld.xsv", FA_OPEN_EXISTING|FA_READ);
	if(res!=FR_OK){
	    lcdPrintln("FOPEN ERROR");
	    lcdPrintln(f_get_rc_string(res));
	    lcdDisplay();
	    getInputWait();
	    return;
	};
	refill_cpld_buffer_fs();

	error = cpld_jtag_program(sizeof(cpld_xsvf_buffer),
				  cpld_xsvf_buffer,
				  refill_cpld_buffer_fs);
	if(error){
	    lcdPrintln("Programming failed!");
	    lcdPrintln(IntToStr(error,5,0));
	    lcdDisplay();
	    /* LED3 (Red) steady on error */
	    ON(LED3);
	    while (1);
	};


	lcdPrintln("Success.");
	lcdDisplay();

	for (res=0;res<10;res++){
	    /* blink LED1, LED2, and LED3 on success */
	    TOGGLE(LED1);
	    TOGGLE(LED2);
	    TOGGLE(LED3);
	    for (i = 0; i < WAIT_LOOP_DELAY; i++)  /* Wait a bit. */
		__asm__("nop");
	};
	/* XXX: Maybe power toggle needed to start CPLD? */
	OFF(EN_1V8);
};
Example #15
0
uint8_t joinGame()
{
    int i;
    struct packet p;
    struct packet ack;
    memset((void*)&p, 0, sizeof(p));
    memset((void*)&ack, 0, sizeof(ack));
    p.len=sizeof(p); 
    p.protocol='G';
    p.command='J';
    p.id= id;
    p.ctr= ++ctr;
    p.c.join.gameId=gameId;
    lcdPrintln("Joining game");
    lcdRefresh();

    for(i=0; i<10; i++){
        nrf_snd_pkt_crc(sizeof(p),(uint8_t*)&p);

        int len = nrf_rcv_pkt_time(30,sizeof(ack),(uint8_t*)&ack);
        if( len==sizeof(ack) ){
            if( (ack.len==32) && (ack.protocol=='G') && ack.command=='a' ){   //check sanity, protocol
                if( ack.id == id && ack.ctr == ctr ){
                    if( ack.c.ack.flags & FLAGS_ACK_JOINOK ){
                        lcdPrintln("Join OK");
                        lcdRefresh();
                        return 1;
                    }else{
                        lcdPrintln("Join rejected");
                        lcdRefresh();
                        getInputWait();
                        getInputWaitRelease();
                        return 0;
                    }
                }
            }
        }
        delayms(70);
    }
    lcdPrintln("timeout :(");
    lcdRefresh();
    getInputWait();
    getInputWaitRelease();

    return 0;
}
Example #16
0
//# MENU CDC
void cdc_menu(){
    uint32_t prompt = 0, rdCnt = 0;
    static uint8_t g_rxBuff[256];
    CDCenable();
    lcdPrintln("CDC enabled.");
    lcdDisplay();
    getInputWaitRelease();

    while(getInputRaw()!=BTN_ENTER){
	if(getInputRaw()==BTN_RIGHT){
	    lcdPrint("status:");
	    lcdPrint(IntToStr(g_vCOM.tx_flags,3,F_HEX));
	    lcdPrint(", ");
	    lcdPrint("c=");
	    lcdPrint(IntToStr(prompt,1,F_LONG));
	    lcdPrintln(".");
	    lcdDisplay();
	    getInputWaitRelease();
	};
	if(getInputRaw()==BTN_LEFT){
	    vcom_write((uint8_t *)"Hello World!\r\n", 14);
	    getInputWaitRelease();
	};
	if ((vcom_connected() != 0) && (prompt == 0)) {
	    prompt = 1;
	}
	/* If VCOM port is opened echo whatever we receive back to host. */
	if (prompt) {
	    rdCnt = vcom_bread(&g_rxBuff[0], 256);
	    if (rdCnt) {
		vcom_write((uint8_t*)"[", 1);
		while(g_vCOM.tx_flags & VCOM_TX_BUSY) __WFI(); // Wait for buffer emtpy
		vcom_write(&g_rxBuff[0], rdCnt);
		while(g_vCOM.tx_flags & VCOM_TX_BUSY) __WFI(); // Wait for buffer emtpy
		vcom_write((uint8_t*)"]", 1);
	    }
	}
	/* Sleep until next IRQ happens */
	__WFI();
    };
    lcdPrintln("disconnect");
    lcdDisplay();
    CDCdisable();
    getInputWaitRelease();
}
Example #17
0
uint8_t selectGame()
{  
    int len, i, selected;
    struct packet p;
    int a = 0;
    config.channel = ANNOUNCE_CHANNEL;
    memcpy(config.mac0, ANNOUNCE_MAC, 5);
    nrf_config_set(&config);

    gamecount = 0;
    for(i=0;i<60;i++){
        len= nrf_rcv_pkt_time(30, sizeof(p), (uint8_t*)&p);
        if (len==sizeof(p)){
            if( a ) a = 0; else a = 1;
            gpioSetValue (RB_LED2, a);
            processPacket(&p);
        }
    }
    selected = 0;
    while(1){
        showGames(selected);
        int key=getInputWait();
        getInputWaitRelease();
        switch(key){
            case BTN_DOWN:
                if( selected < gamecount-1 ){
                    selected++;
                }
                break;
            case BTN_UP:
                if( selected > 0 ){
                    selected--;
                }
                break;
            case BTN_LEFT:
                return 0;
            case BTN_ENTER:
            case BTN_RIGHT:
                if( gamecount == 0 )
                    return 0;
                gameId = games[selected].gameId;
                memcpy(config.txmac, games[selected].gameMac, 5);
                memcpy(config.mac0, games[selected].gameMac, 5);
                config.mac0[4]++;
                config.channel = games[selected].gameChannel;
                interval = games[selected].interval;
                jitter = games[selected].jitter;
                flags = games[selected].gameFlags;
                nrf_config_set(&config);
                if( games[selected].gameFlags & FLAGS_MASS_GAME )
                    return 1;
                else
                    return joinGame();
        }
    }
}
Example #18
0
//# MENU spectrum
void spectrum_menu()
{
	lcdClear();
	lcdDisplay();
	getInputWaitRelease();

	// RF initialization from ppack.c:
	dac_init(false);
	cpu_clock_set(204); // WARP SPEED! :-)
	hackrf_clock_init();
	rf_path_pin_setup();
	/* Configure external clock in */
	scu_pinmux(SCU_PINMUX_GP_CLKIN, SCU_CLK_IN | SCU_CONF_FUNCTION1);
	sgpio_configure_pin_functions();
	ON(EN_VDD);
	ON(EN_1V8);
	OFF(MIC_AMP_DIS);
	delayms(500); // doesn't work without
	cpu_clock_set(204); // WARP SPEED! :-)
	si5351_init();
	portapack_init();

	while(1)
	{
		switch(getInput())
		{
			case BTN_UP:
				displayMode=MODE_WATERFALL;
				break;
			case BTN_DOWN:
				displayMode=MODE_SPECTRUM;
				break;
			case BTN_LEFT:
				freq -= 2000000;
				ssp1_set_mode_max2837();
				set_freq(freq);
				break;
			case BTN_RIGHT:
				freq += 2000000;
				ssp1_set_mode_max2837();
				set_freq(freq);
				break;
			case BTN_ENTER:
				//FIXME: unset the callback, reset the clockspeed, tidy up
                nvic_disable_irq(NVIC_DMA_IRQ);
                OFF(EN_VDD);
                OFF(EN_1V8);
                ON(MIC_AMP_DIS);
                systick_set_clocksource(0);
                systick_set_reload(12e6/SYSTICKSPEED/1000);
				return;

		}
	}
}
Example #19
0
//# MENU config
void changer(void){
    if(execute_file("config.int")){
        lcdClear();
        lcdPrintln("config");
        lcdPrintln("l0dable");
        lcdPrintln("not found");
        lcdRefresh();
        getInputWait();
        getInputWaitRelease();
    }
}
Example #20
0
int main(uint32_t startloc) {
	cpu_clock_init();
	ssp_clock_init();
	systickInit();

//	cpu_clock_set(204);

	SETUPgout(EN_VDD);
	SETUPgout(MIXER_EN);
	SETUPgout(MIC_AMP_DIS);

	SETUPgout(LED1);
	SETUPgout(LED2);
	SETUPgout(LED3);
	SETUPgout(LED4);
	inputInit();
	flashInit();

	lcdInit();
	fsInit();
	lcdFill(0xff); /* Display BL Image here */

	sli=startloc;

	if (startloc != (uintptr_t)&_app_start){ /* not booted via DFU, do autoboot */ 
        char filename[FLEN];
        switch(getInputRaw()){
            case BTN_LEFT:
                getInputWaitRelease();
                doRealExec(1);
                break;
            case BTN_UP:
                doMSC();
            default:
            case BTN_NONE:
                readTextFile(BOOTCFG, filename, FLEN);
                lcdPrintln("Booting:");
                lcdPrintln(filename);
                bootFile(filename);
                break;
		};
	};
	static const struct MENU main={ "Bootloader", {
		{ "Exec Firmware", &doExec},
		{ "MSC", &doMSC},
		{ "Flash Boot Ldr", &doFlash},
		{ "Info", &doInfo},
		{NULL,NULL}
	}};
	do {
		handleMenu(&main);
	}while(1);
}
Example #21
0
//# MENU Apack
void ppack_menu() {
	lcdClear();
	lcdPrintln("PPack port");
	lcdPrintln("");
	lcdPrintln("up=enable");
	lcdDisplay();
	dac_init(false);

	cpu_clock_set(204); // WARP SPEED! :-)
	hackrf_clock_init();
	rf_path_pin_setup();
	/* Configure external clock in */
	scu_pinmux(SCU_PINMUX_GP_CLKIN, SCU_CLK_IN | SCU_CONF_FUNCTION1);

	sgpio_configure_pin_functions();

	ON(EN_VDD);
	ON(EN_1V8);
	OFF(MIC_AMP_DIS);
	complex_s8_t * samples;

	while(1){
		switch(getInputRaw()){
			case BTN_UP:
			    // ON(MIXER_EN); // hackrf does this
			    cpu_clock_set(204); // WARP SPEED! :-)
			    si5351_init();
			    portapack_init();
			    getInputWaitRelease();

			    break;
			case BTN_DOWN:
			    lcdPrintln("file");
			    writeFile("samples.8", (char*)0x20000000,(uintptr_t)s8ram-0x20000000);
			    break;
			case BTN_LEFT:
			    lcdPrintln("reset");
			    s8ram=(complex_s8_t*)0x20000000;
			    break;
			case BTN_RIGHT:
				break;
			case BTN_ENTER:
				return;
		};
		TOGGLE(LED2);
		delayms(40);
		lcdPrint(IntToStr((uintptr_t)s8ram,8,F_HEX));
		lcdPrint(" ");
		lcdPrintln(IntToStr(sctr,7,F_LONG));
		lcdDisplay();
	};
};
Example #22
0
static void screen_intro() {
	lcdClear();
	lcdPrintln("");
	lcdPrintln("    r0ket");
	lcdPrintln("");
	lcdPrintln("launch config");
	lcdPrintln("");
	lcdPrintln("press any key");
	lcdPrintln("to continue");
	lcdRefresh();
	getInputWait();
	getInputWaitRelease();
}
Example #23
0
File: avr.c Project: x29a/r0ket
void ram(void) {
	uint8_t spiBuf=0;
	int failed = 0, progmode = 0;
	uint8_t sigbyte = 0, partfam = 0, partnum = 0;

	lcdClear();
	lcdPrintln("avrisp + spi");
	lcdRefresh();
	
	
	getInputWait();
	getInputWaitRelease();
};
Example #24
0
void doMSC(){
	MSCenable();
	lcdPrintln("MSC enabled.");
	lcdDisplay();
	getInputWaitRelease();

	while(getInputRaw()!=BTN_ENTER){
        uint32_t max = mscDisk_maxAddressWR();
        lcdPrint("MAX:");
        lcdPrintln(IntToStr(max,8,F_SSPACE));
        lcdDisplay();
        lcdMoveCrsr(0,-8);
        if(max == 1572863) {
            break;
        }
		//__WFI();
	};

	lcdPrintln("disconnect");
	lcdDisplay();
	MSCdisable();
	fsReInit();
	getInputWaitRelease();
};
Example #25
0
//# MENU nick changeFont
void doFont(void){
    getInputWaitRelease();
    if( selectFile(GLOBAL(nickfont),"F0N") != 0){
        lcdPrintln("No file selected.");
        return;
    };
	writeFile("font.cfg",GLOBAL(nickfont),strlen(GLOBAL(nickfont)));

    lcdClear();
    setIntFont(&Font_7x8);
    lcdPrintln("Test:");
    setExtFont(GLOBAL(nickfont));
    lcdPrintln(GLOBAL(nickname));
    lcdDisplay();
    setIntFont(&Font_7x8);
    while(!getInputRaw())delayms(10);
}
Example #26
0
//# MENU ws2812b
void ws1812b_menu(){
    uint8_t pattern[] = {
                     255, 255, 0,
                     255, 255, 0,

                     0,   0,   255,
                     0,   0,   255,
                     0,   0,   255,
                     0,   0,   255,
                     0,   0,   255,
                     255, 0,   0
                     };

    uint8_t green[] = {255, 0, 0};
	getInputWaitRelease();
    //cpu_clock_set(17);
    cpu_clock_set(51);
	SETUPgout(RGB_LED);

	while(1){
		lcdClear(0xff);
		lcdPrintln("WS2812B test");
		lcdPrintln("UP: pattern");
		lcdPrintln("DOWN: green");
		lcdPrintln("ENTER: exit");
		lcdDisplay();

		switch(getInput()){
			case BTN_UP:
                ws2812_sendarray(pattern, sizeof(pattern));
				break;
			case BTN_DOWN:
                ws2812_sendarray(green, sizeof(green));
				break;
			case BTN_LEFT:
				break;
			case BTN_RIGHT:
				break;
			case BTN_ENTER:
				return;
				break;
		};
	};
	return;
};
Example #27
0
//# MENU BPSK
void bfsk_menu() {
    lcdClear();
    lcdPrintln("ENTER to go back");
    lcdPrintln("L/R/U/D to xmit");
    rflib_lcdDisplay();
    getInputWaitRelease();

    cpu_clock_set(204);
    CDCenable();

    rflib_init();
    rflib_bfsk_init();
    rflib_set_freq(FREQSTART);
    rflib_bfsk_receive();

    while(1) {
        switch (getInputRaw()) {
            case BTN_UP:
                transmit("up");
                break;
            case BTN_DOWN:
                transmit("down");
                break;
            case BTN_RIGHT:
                transmit("right");
                break;
            case BTN_LEFT:
                transmit("left");
                break;
            case BTN_ENTER:
                goto stop;
        }
        if(vcom_connected()) {
            /* check if we got data from USB-CDC, transmit it, if so. */
            uint8_t sendbuf[255];
            uint32_t read = vcom_bread(sendbuf, 255);
            if(read > 0) rflib_bfsk_transmit(sendbuf, read, true);
        }
        receive();
    }
stop:
    rflib_shutdown();
    return;
}
Example #28
0
static bool screen_intro(void) {
	char key=0;
	while(key==0) {
		getInputWaitRelease();
		lcdFill(0);
		int ct = 0;
    for (int i = 0; i < SHIP_HEIGHT; i++){
      for(int d = 0; d < SHIP_WIDTH; d++){
        lcdSetPixel((40+d)%RESX,(10+i)%RESY,SHIP[ct]);
        ct++;
      }
    }
		DoString (13,25,"R0KET TYPE");
		uint32_t highscore;
	  char highnick[20];
	  highscore = highscore_get(highnick);
		DoInt(13, 40, highscore);
		DoString (13, 50, highnick);
		lcdDisplay();
		key=getInputWaitTimeout(1000);
	}
	//getInputWaitRelease();
	return !(key==BTN_LEFT);
}
Example #29
0
//# MENU img
void img_menu() {
	char filename[FLEN];
	FATFS FatFs;
	FRESULT res;
	int ct=0x3a;

	lcdClear();
	lcdPrintln("Image");
	lcdPrintln("up:   16bit");
	lcdPrintln("down: 12bit");
	lcdPrintln("l/r:  contrast");
	lcdDisplay();

	getInputWaitRelease();

	while(1){
		switch(getInput()){
			case BTN_UP:
				lcd_select();
				lcdWrite(TYPE_CMD,0x3a); lcdWrite(TYPE_DATA,2);
				lcd_deselect();
				getInputWaitRelease();
				if(selectFile(filename,"L16")){
					lcdPrintln("Select ERROR");
					lcdDisplay();
					getInputWait();
					return;
				};

				lcd_select();
				lcdWrite(TYPE_CMD,0x3a); lcdWrite(TYPE_DATA,5);
				lcd_deselect();
				do_image(filename);
				break;
			case BTN_DOWN:
				lcd_select();
				lcdWrite(TYPE_CMD,0x3a); lcdWrite(TYPE_DATA,2);
				lcd_deselect();
				getInputWaitRelease();
				if(selectFile(filename,"LCD")){
					lcdPrintln("Select ERROR");
					lcdDisplay();
					getInputWait();
					return;
				};

				lcd_select();
				lcdWrite(TYPE_CMD,0x3a); lcdWrite(TYPE_DATA,3);
				lcd_deselect();
				do_image(filename);
				break;
			case BTN_LEFT:
				ct-=1;
				lcd_select();
				lcdWrite(TYPE_CMD,0x25); lcdWrite(TYPE_DATA, ct);
				lcd_deselect();
				break;
			case BTN_RIGHT:
				ct+=1;
				lcd_select();
				lcdWrite(TYPE_CMD,0x25); lcdWrite(TYPE_DATA, ct);
				lcd_deselect();
				break;
			case BTN_ENTER:
				lcd_select();
				lcdWrite(TYPE_CMD,0x3a); lcdWrite(TYPE_DATA,2);
				lcd_deselect();
				return;
		};
	};
};
Example #30
0
File: lcd.c Project: n0p/f1rmware
//# MENU lcd
void lcd_menu() {
    getInputWaitRelease();
    lcdClear();
    lcdPrintln("LCD:");
    lcdDisplay();
    ON(LED1);

    uint16_t x,y;
    uint8_t rgb=0;
    uint8_t ct=0x3a;
    uint16_t rgba[]= { RGB(0xff,0,0),   RGB(0,0xff,0),   RGB(0,0,0xff),
                       RGB(0,0xff,0xff),RGB(0xff,0,0xff),RGB(0xff,0xff,0),
                       RGB(0xff,0xff,0xff),0
                     };
    while(1) {
        switch(getInputWaitRepeat()) {
        case BTN_DOWN:
            lcd_select();
            lcdWrite(TYPE_CMD,0x3a);
            lcdWrite(TYPE_DATA,5);
            lcdWrite(TYPE_CMD,0x2C);
            for (y=0; y<128; y++) {
                for (x=0; x<RESX; x++) {
                    if (x<20) {
                        if(y<64) {
                            PIX(0xff,(0xff-(0xff&(y<<2))),(0xff-(0xff&(y<<2))));
                        } else {
                            PIX((0xff-(0xff&(y<<2))),0,0);
                        };
                    } else if (x <40) {
                        if(y<64) {
                            PIX((0xff-(0xff&(y<<2))),0xff,(0xff-(0xff&(y<<2))));
                        } else {
                            PIX(0,(0xff-(0xff&(y<<2))),0);
                        };
                    } else if (x <60) {
                        if(y<64) {
                            PIX((0xff-(0xff&(y<<2))),(0xff-(0xff&(y<<2))),0xff);
                        } else {
                            PIX(0,0,(0xff-(0xff&(y<<2))));
                        };
                    } else if (x <80) {
                        if(y<64) {
                            PIX(((0xff&(y<<2))),0,0);
                        } else {
                            PIX(0xff,((0xff&(y<<2))),((0xff&(y<<2))));
                        };
                    } else if (x <100) {
                        if(y<64) {
                            PIX(0,((0xff&(y<<2))),0);
                        } else {
                            PIX(((0xff&(y<<2))),0xff,((0xff&(y<<2))));
                        };
                    } else if (x <120) {
                        if(y<64) {
                            PIX(0,0,((0xff&(y<<2))));
                        } else {
                            PIX(((0xff&(y<<2))),((0xff&(y<<2))),0xff);
                        };
                    } else {
                        PIX(0,0,0);
                    }
                };
            };
            for (y=128; y<RESY; y++) {
                for (x=0; x<RESX; x++) {
                    PIX(0,0,0);
                };
            };
            lcd_deselect();
            break;
        case BTN_LEFT:
            ct--;
            lcd_select();
            lcdWrite(TYPE_CMD,0x25);
            lcdWrite(TYPE_DATA, ct);
            lcd_deselect();
            break;
        case BTN_RIGHT:
            ct++;
            lcd_select();
            lcdWrite(TYPE_CMD,0x25);
            lcdWrite(TYPE_DATA, ct);
            lcd_deselect();
            break;
        case BTN_UP:
            lcd_select();
            lcdWrite(TYPE_CMD,0x3a);
            lcdWrite(TYPE_DATA,5);
            lcdWrite(TYPE_CMD,0x2C);
            if(rgb==0) {
                for (y=0; y<RESY; y++) {
                    for (x=0; x<RESX; x++) {
                        if(x==0 || x==RESX-1 || y==0 || y==RESY-1) {
                            PIX(0xff,0,0);
                        } else if(x==1 || x==RESX-2 || y==1 || y==RESY-2) {
                            PIX(0xff,0xff,0);
                        } else if(x==2 || x==RESX-3 || y==2 || y==RESY-3) {
                            PIX(0,0,0xff);
                        } else {
                            PIX(0xff,0xff,0xff);
                        };
                    };
                };
            } else {
                for (y=0; y<RESY; y++) {
                    for (x=0; x<RESX; x++) {
                        lcdWrite(TYPE_DATA,rgba[rgb-1]>>8);
                        lcdWrite(TYPE_DATA,rgba[rgb-1]&0xff);
                    };
                };
            };
            lcd_deselect();
            rgb=(rgb+1)%(1+(sizeof(rgba)/sizeof(*rgba)));
            break;
        case BTN_ENTER:
            lcd_select();
            lcdWrite(TYPE_CMD,0x3a);
            lcdWrite(TYPE_DATA,2);
            lcd_deselect();
            return;
        };
        getInputWaitRelease();
    };
};