long ve_bit1(char *s, long v, u08 BitNum, u08 OnOffLabel) { if(ve_flag(veREAD)) { // Reading From EEPROM if(ve_flag(veEEPROM_NO_RW)) return(v); // this var is disabled from EEPROM RW while (!eeprom_is_ready()); if(eeprom_read_byte((void*) EIndex++)) v |= (1<<BitNum); } else if(ve_flag(veWRITE)) { // Writing To EEPROM if(ve_flag(veEEPROM_NO_RW)) return(v); // this var is disabled from EEPROM RW while (!eeprom_is_ready()); if(bit_is_set(v,BitNum)) eeprom_write_byte((void*) EIndex++,1); else eeprom_write_byte((void*) EIndex++,0); } else if((veGroupI == veCurGroup) && (++veVarI == veCurVar)) { // if current variable if(ve_flag(veCOUNT_VARS)) return(v); // iterating just to get counts veCurVal = MAXLONG; // flag to not draw slider if(veDelta < 0) v &= ~_BV(BitNum); // - turn off if(veDelta > 0) v |= _BV(BitNum); // + turn on veDelta = 0; #ifdef RES_128x64 lcd_setxy(0,CHAR_HEIGHT*3); printf("%s ", s); #else lcd_setxy(0,CHAR_HEIGHT*4); printf("%s ", s); #endif if(bit_is_set(v,BitNum)) { if(OnOffLabel) printf("ON"); else printf("1"); } else { if(OnOffLabel) printf("OFF"); else printf("0"); } if (vePort != -1) printf (PS("\n")); } return(v); // options for load/save }
void AksenMain(void) { lcd_puts("Hallo"); while(1) {/* lcd_cls(); lcd_ubyte(analog(0)); lcd_setxy(0, 4); lcd_ubyte(analog(1)); lcd_setxy(0, 8); lcd_ubyte(analog(2)); lcd_setxy(0, 12); lcd_ubyte(analog(3)); lcd_setxy(1, 0); lcd_ubyte(analog(4)); lcd_setxy(1, 4); lcd_ubyte(analog(5)); lcd_setxy(1, 8); lcd_ubyte(analog(6)); lcd_setxy(1, 12); lcd_ubyte(analog(7)); sleep(50);/**/ lcd_setxy(1,0); lcd_ubyte(getSensor(0)); lcd_ubyte(getSensor(1)); lcd_ubyte(getSensor(2)); lcd_ubyte(getSensor(3)); lcd_ubyte(getSensor(4)); lcd_ubyte(getSensor(5)); lcd_ubyte(getSensor(6)); lcd_ubyte(getSensor(7)); lcd_ubyte(getSensor(8)); } }
void md_init(void) { md_init_no_logo(); #ifdef LIBRARY_BUILD lcd_setxy(CHAR_WIDTH*4,ROWS-CHAR_HEIGHT); printf (PS(LIBRARY_VERSION)); draw_donkey_logo(); // - bezier curves delay_ms(1500); lcd_clear(); #endif }
void ve_group(char *s) { if (++veGroupI != veCurGroup) return; // was post += !!! why if ( ve_flag(veCOUNT_VARS) | ve_flag(veREAD) | ve_flag(veWRITE)) return; if (vePort==-1) { lcd_setxy(0,CHAR_HEIGHT*3/2); // Note: parameter s is PS using PS buffer // Do not use PS( ) on any of the strings below. Will overwrite s since only // one buffer used #ifdef RES_128x64 printf("%s ",s); // skip showing # of vars in group on 128 pixel display #else if(veVarCount) printf("%s %d/%d", s, veCurVar, veVarCount); // show current group label else printf("%s 0/0", s); #endif // pad to erase stray chars // if when say 10/10 loops to 1/10 if((veVarCount > 9) && (veCurVar < 10)) printf(" "); } else { printf("%s %d/%d ",s, veCurVar, veVarCount) ; if (!veVarCount) printf ("\n"); } }
long ve_int1(char *s, long v, u08 vsize, long min, long max) { char ns[COLS/CHAR_WIDTH+1]; long p; p = 0; if(ve_flag(veREAD)) { // Read From EEPROM if(ve_flag(veEEPROM_NO_RW)) return(v); // this var is disabled from EEPROM RW while (!eeprom_is_ready()); eeprom_read_block(&p,(void*) EIndex,vsize); EIndex += vsize; // veVarCount++; // sign extension issues?? // maybe code datatype in list // 8 16 32 signed unsigned switch(vsize) { case 1: v = (u08) p; break; case 2: v = (int) p; break; case 4: v = (long) p; break; } return(v); } if(ve_flag(veWRITE)) { // Write to EEPROM if(ve_flag(veEEPROM_NO_RW)) return(v); // this var is disabled from EEPROM RW while(!eeprom_is_ready()); eeprom_write_block(&v,(void *) EIndex, vsize); // a EIndex += vsize; // veVarCount++; return (v); } if((veGroupI == veCurGroup) && (++veVarI == veCurVar)) { // if current variable if(ve_flag(veCOUNT_VARS)) return(v); if (veStoreSerialBuffer) { veStoreSerialBuffer = 0; // 0x could do hex scan ? veBuf[veBufIndex] = 0; // add null terminator sscanf(veBuf, "%ld", &v); } if(ve_flag(veUPDATE_FROM_SLIDER)) { v = veCurVal; ve_clrflag(veUPDATE_FROM_SLIDER); } if (vePort == -1) { if(ve_flag(veCALL_INPUT_DIALOG)) { #ifdef RES_128x64 sprintf(ns, "%-13s", s); v = menu_calc(ns, NO_MATH|FIX_MODE|NO_DP_CHANGE) / calc_scale; // invoke calculator for number input/edit with no math #else sprintf(ns, "%-16s", s); v = menu_calc(ns, NO_MATH|FIX_MODE|NO_DP_CHANGE) / calc_scale; // invoke calculator for number input/edit with no math #endif // sprintf(ns, "%ld", v); // v = menu_calc(ns, EVAL_TITLE|FIX_MODE|NO_DP_CHANGE) / calc_scale; // invoke calculator for number input/edit with no math ve_clrflag(veCALL_INPUT_DIALOG); veDelta = 0; } } v += veDelta; // add delta to variable veDelta = 0; // reset delta if(v < min) v = min; if(v > max) v = max; if (vePort == -1) { // Note: on printf statements below -- do not use PS on format strings // to save RAM. Buffer allocated by PS macro is being used by parameter s // s will be overwritten and you will see the format string appear in output #ifdef RES_128x64 lcd_setxy(0,CHAR_HEIGHT*3); printf("%s %ld", s, v); // show var label and value #else lcd_setxy(0,CHAR_HEIGHT*4); printf("%s %ld", s, v); // show var label and value #endif } veCurMin = min; veCurMax = max; veCurVal = v; //if (vePort != -1) printf ("%s : %s %ld \n",veCurGroupStr,s,v); if (vePort != -1) printf ("%s %ld \n",s,v); } if(v < min) v = min; // clip to min max range regardless of match if(v > max) v = max; // this applied to every var needed ??? return(v); // options for load/save }
void AksenMain(void) { byte current_startpoint = 0; //char check = 99; //Variable zum Pruefen ob Fahrgast vorhanden und Route absolvierbar ist // Startposition A oder B eventuell mit seitlichen Dipschaltern ueberpruefen => if... // Initialisierung Suchverfahren while(1) { lcd_setxy(0,0); lcd_ubyte(analog(8)); //breitensuche(current_startpoint); // Fahrplan laden // Fahrplan auslesen -> iterativer Prozess abhängig von der Anzahl der Fahrgaeste //check = read_plan(current_startpoint); // transportierte Fahrgaeste auf Karte mit x etc. markieren aber nicht mit 'F' // Codeanzeige auf Display, ob Fahrgast vorhanden, Route passierbar ist -> lcd_puts("0, -1 oder -2") ... //Start wenn Licht aus ist -> drive(); } /* void breitensuche(byte start) { byte aktPosition = start; byte kosten = 0; byte kostenKarte[] = 99; kostenKarte[aktPosition] = 0; putANummer(aktPosition); while(aktPosition != 0) { kosten++; if(_fa[aktPosition+1] == '.') { putANummer(aktPosition+1); kostenKarte[aktPosition+1] = kosten; } if(_fa[aktPosition+7] == '.') { putANummer(aktPosition+7); kostenKarte[aktPosition+7] = kosten; } if(_fa[aktPosition-1] == '.') { putANummer(aktPosition-1); kostenKarte[aktPosition-1] = kosten; } if(_fa[aktPosition-7] == '.') { putANummer(aktPosition-7); kostenKarte[aktPosition-7] = kosten; } } */ }