boolean PluginTX_005(byte function, char *string) { //10;EURODOMEST;03696b;0;ON; //012345678901234567890123456 boolean success=false; if (strncasecmp(InputBuffer_Serial+3,"EURODOMEST;",11) == 0) { // KAKU Command eg. unsigned long bitstream=0L; if (InputBuffer_Serial[20] != ';') return success; if (InputBuffer_Serial[22] != ';') return success; InputBuffer_Serial[12]=0x30; InputBuffer_Serial[13]=0x78; InputBuffer_Serial[20]=0x00; bitstream=str2int(InputBuffer_Serial+12);// Address InputBuffer_Serial[22]=0x00; byte temp=str2int(InputBuffer_Serial+21);// Button number bitstream=(bitstream) << 4; if (temp == 1) bitstream=bitstream+0x02; // 0010 if (temp == 2) bitstream=bitstream+0x04; // 0100 if (temp == 3) bitstream=bitstream+0x08; // 1000 if (temp == 6) bitstream=bitstream+0x0d; // 1101 if (temp == 7) bitstream=bitstream+0x0f; // 1111 if (temp > 7) { return success; } byte command=0; command = str2cmd(InputBuffer_Serial+23); if (command == VALUE_OFF) { bitstream=bitstream|1; } Eurodomest_Send(bitstream); // the full bitstream to send success=true; } return success; }
boolean PluginTX_006(byte function, char *string) { boolean success=false; //10;Blyss;00ff98;A1;OFF; //012345678901234567890123456 // Hier aangekomen bevat string het volledige commando. Test als eerste of het opgegeven commando overeen komt if (strncasecmp(InputBuffer_Serial+3,"BLYSS;",6) == 0) { // Blyss Command eg. unsigned long Bitstream = 0L; if (InputBuffer_Serial[15] != ';') return success; // check if (InputBuffer_Serial[18] != ';') return success; // check unsigned long Home=0; // Blyss channel A..P byte Address=0; // Blyss subchannel 1..5 byte c; byte subchan=0; // subchannel InputBuffer_Serial[7]=0x30; InputBuffer_Serial[8]=0x78; InputBuffer_Serial[15]=0; Bitstream=str2int(InputBuffer_Serial+7); // get address c=tolower(InputBuffer_Serial[16]); // A..P if(c>='a' && c<='p'){Home=c-'a';} c=tolower(InputBuffer_Serial[17]); // 1..5 if(c>='1' && c<='5'){Address=Address+c-'0';} if (Address==1) subchan=0x80; if (Address==2) subchan=0x40; if (Address==3) subchan=0x20; if (Address==4) subchan=0x10; if (Address==5) subchan=0x30; Home = Home << 24; Bitstream=(Bitstream) << 8; Bitstream=Bitstream+subchan; Bitstream=Bitstream+Home; c = str2cmd(InputBuffer_Serial+19); // ALL ON/OFF command if (c == VALUE_OFF) { Bitstream=Bitstream|1; } else { if (c == VALUE_ALLOFF) { Bitstream=Bitstream|3; } else if (c == VALUE_ALLON) { Bitstream=Bitstream|2; } } Blyss_Send(Bitstream); // Bitstream contains the middle part of the bitstream to send success=true; } return success; }
int main(void) { int i; FILE *fp = fopen("a.wb", "wb"); enum CMD_TYPE cmd_t; INSTRUCTION ins; char cmd[16]; int param; for(i = 0; ; ++i) { param = 0; printf("%03d>", i); scanf("%s", cmd); if(!strcmp("exit", cmd)) break; cmd_t = str2cmd(cmd); if(REQUIRE_PARAM(cmd_t)) { scanf("%d", ¶m); } ins.imp_t = find_imp_from_cmd(cmd_t); ins.cmd_t = cmd_t; ins.param = param; fwrite(&ins, 1, sizeof(INSTRUCTION), fp); } fclose(fp); return 0; }
boolean Plugin_021(byte function, struct NodoEventStruct *event, char *string) { boolean success=false; switch(function) { case PLUGIN_INIT: { LCD_I2C_init(); break; } case PLUGIN_COMMAND: { byte Par2=event->Par2 & 0xff; // Column byte Par3=event->Par2>>8 & 0xff; // Data to display byte Par4=event->Par2>>16 & 0xff; // In case of var, variable number boolean Print = true; if (event->Par1 >= 0 && event->Par1 <= PLUGIN_021_ROWS) { char TempString[80]; TempString[0]=0; switch (Par3) { case 0: case CMD_RESET: if (event->Par1 == 0) LCD_I2C_clear(); else LCD_I2C_printline(event->Par1-1,0, (char*)""); Print=false; break; case EVENT_BOOT: LCD_I2C_init(); break; case VALUE_ON: _backlightval=LCD_BACKLIGHT; LCD_I2C_expanderWrite(0); Print=false; break; case VALUE_OFF: _backlightval=LCD_NOBACKLIGHT; LCD_I2C_expanderWrite(0); Print=false; break; case EVENT_MESSAGE: if ((Par4 > 0) && (Par4 <= LCDI2C_MSG_MAX)) { sprintf(TempString,"%s", LCDText_tabel[Par4-1]); LCD_I2C_printline(event->Par1-1, Par2-1, TempString); } break; case EVENT_VARIABLE: if (Par4 > 0 && Par4 <16) { int d1 = UserVar[Par4-1]; // Get the integer part float f2 = UserVar[Par4-1] - d1; // Get fractional part int d2 = trunc(f2 * 10); // Turn into integer if (d2<0) d2=d2*-1; sprintf(TempString,"%d.%01d", d1,d2); LCD_I2C_printline(event->Par1-1, Par2-1, TempString); } break; } // case //if (Print) // LCD_I2C_printline(event->Par1-1, Par2-1, TempString); Wire.endTransmission(true); success=true; } // if break; } case PLUGIN_MMI_IN: { char *TempStr=(char*)malloc(INPUT_COMMAND_SIZE); if(GetArgv(string,TempStr,1)) { if(strcasecmp(TempStr,PLUGIN_NAME_021)==0) { if(event->Par1 >= 0 && event->Par1 <= PLUGIN_021_ROWS) { if(GetArgv(string,TempStr,4)) event->Par2|=str2cmd(TempStr)<<8; if(GetArgv(string,TempStr,5)) event->Par2|=str2int(TempStr)<<16; event->Type = ESP_TYPE_PLUGIN_COMMAND; event->Command = PLUGIN_ID_021; success=true; } } } free(TempStr); break; } case PLUGIN_MMI_OUT: { //strcpy(string,PLUGIN_NAME_021); //strcat(string," "); //strcat(string,int2str(event->Par1)); //strcat(string,","); //strcat(string,int2str(event->Par2 & 0xff)); //strcat(string,","); //strcat(string,cmd2str(event->Par2>>8 & 0xff)); //strcat(string,","); //strcat(string,int2str(event->Par2>>16 & 0xff)); sprintf(string,"%s",PLUGIN_NAME_021); sprintf(string,"%s%s",string," "); sprintf(string,"%s%s",string,int2str(event->Par1)); sprintf(string,"%s%s",string,","); sprintf(string,"%s%s",string,int2str(event->Par2 & 0xff)); sprintf(string,"%s%s",string,","); sprintf(string,"%s%s",string,cmd2str(event->Par2>>8 & 0xff)); sprintf(string,"%s%s",string,","); sprintf(string,"%s%s",string,int2str(event->Par2>>16 & 0xff)); break; } } return success; }