Posted: Fri Mar 17, 2023 9:45 am
Självklart kommer vi lägga in stöder när/om det blir "knäckt"
Code: Select all
unsigned int find_code(unsigned int x)
{
unsigned int bits[16] = { 0xf , 0xa , 0x7 ,0xe,
0xf ,0xd ,0x9 ,0x1,
0x1 ,0x2 ,0x4 ,0x8,
0x3 ,0x6 ,0xc ,0xb };
unsigned int bit = 1;
unsigned int res = 0x5;
int i;
unsigned int lo,hi;
if ((x&0x3)==3) {
lo = x & 0x00ff;
hi = x & 0xff00;
lo += 4;
if (lo>0x100) lo = 0x12;
x = lo | hi;
}
for(i=0;i<16;i++) {
if (x&bit) {
res = res ^ bits[i];
}
bit = bit << 1;
}
return res;
}
Code: Select all
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
unsigned int find_code(unsigned int x)
{
unsigned int bits[16] = { 0xf ,0xa ,0x7 ,0xe,
0xf ,0xd ,0x9 ,0x1,
0x1 ,0x2 ,0x4 ,0x8,
0x3 ,0x6 ,0xc ,0xb };
unsigned int bit = 1;
unsigned int res = 0x5;
int i;
unsigned int lo,hi;
if ((x&0x3)==3) {
lo = x & 0x00ff;
hi = x & 0xff00;
lo += 4;
if (lo>0x100) lo = 0x12;
x = lo | hi;
}
for(i=0;i<16;i++) {
if (x&bit) {
res = res ^ bits[i];
}
bit = bit << 1;
}
return res;
}
void transmit( unsigned int device, unsigned int check, unsigned int val )
{
const char ssss = 85;
const char sssl = 84; // 0
const char slss = 69; // 1
const char bits[2] = {sssl,slss};
int i;
char txStr[100];
char preamble[] = {'R', 5, 'T', 114,60,1,1,105,ssss,ssss};
memcpy(txStr, preamble, sizeof(preamble));
size_t pos = sizeof(preamble);
for(i=15;i>=0;i--) txStr[pos++]=bits[(device>>i)&0x01];
for(i=3;i>=0;i--) txStr[pos++]=bits[(check>>i)&0x01];
for(i=3;i>=0;i--) txStr[pos++]=bits[(val>>i)&0x01];
txStr[pos++] = ssss;
txStr[pos++] = '+';
txStr[pos++] = 0;
FILE* fpipe = popen("tdtool --raw -", "w");
if (fpipe==NULL) {
printf("Problem with pipe.\n");
} else {
/* printf("%s", txStr); */
fprintf(fpipe, "%s", txStr);
fclose(fpipe);
}
}
int main( int argc, char **argv )
{
unsigned int device = 0;
unsigned int check = 0;
unsigned int mask = 0;
unsigned int invmask;
unsigned int val;
int i;
int pause = 0;
if (argc<3) {
printf("Usage: %s device(hex) value(decimal)\n", argv[0]);
printf(" device id is 4 hex digits\n");
printf(" value is 0-15, where 0=off, 15=on and 10=learn\n");
exit(0);
}
sscanf(argv[1],"%x",&device);
sscanf(argv[2],"%i",&val);
check = find_code(device);
transmit(device,check,val);
exit(0);
}
Bra jobbat micke, när finns denna addon i Telldus Center?micke.prag wrote:http://developer.telldus.se/changeset/448
Finns det något planerat releasedatum för 2.0.2?micke.prag wrote:Till version 2.0.2.