From b6bbda807720ccf01c374a5c3549a3262dce824b Mon Sep 17 00:00:00 2001 From: Miroslav Strob Date: Mon, 11 Apr 2011 21:24:43 +0200 Subject: [PATCH] barcode: Next testing version, nothing more. --- src/barcode/barcode.c | 263 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 218 insertions(+), 45 deletions(-) diff --git a/src/barcode/barcode.c b/src/barcode/barcode.c index 5d391c7a..6362504a 100644 --- a/src/barcode/barcode.c +++ b/src/barcode/barcode.c @@ -8,73 +8,246 @@ #include #include "barcode.h" + static struct sercom_data sercom; static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; +typedef enum { + AIM_OFF, + AIM_ON, + BEEP, + CMD_ACK, + CMD_NAK, + LED_OFF, + LED_ON, + PARAM_DEFAULTS, + PARAM_REQUEST, + PARAM_SEND, + REQUEST_REVISION, + SCAN_DISABLE, + SCAN_ENABLE, + SLEEP, + START_DECODE, + STOP_DECODE, + WAKEUP, + CUSTOM_DEFAULTS +} commandes; + + +unsigned char getOpcode(commandes command) +{ + switch (command) + { + case AIM_OFF: + return 0xC4; + break; + case AIM_ON: + return 0xC5; + break; + case BEEP: + return 0xE6; + break; + case CMD_ACK: + return 0xD0; + break; + case CMD_NAK: + return 0xD1; + break; + case LED_OFF: + return 0xE8; + break; + case LED_ON: + return 0xE7; + break; + case PARAM_DEFAULTS: + return 0xC8; + break; + case PARAM_REQUEST: + return 0xC7; + break; + case PARAM_SEND: + return 0xC6; + break; + case REQUEST_REVISION: + return 0xA3; + break; + case SCAN_DISABLE: + return 0xEA; + break; + case SCAN_ENABLE: + return 0xE9; + break; + case SLEEP: + return 0xEB; + break; + case START_DECODE: + return 0xE4; + break; + case STOP_DECODE: + return 0xE5; + break; + case WAKEUP: + return 0x00; + break; + case CUSTOM_DEFAULTS: + return 0x12; + break; + } +} + +int send_command(commandes command, unsigned char *data, int dataLength) +{ + unsigned char length; + int i; //pomocne cyklitko + + if (data==NULL) { + length=7; + } + else { + length=dataLength+6; + printf("\ndelka paketu je %d\n", length); + } + + unsigned char message[length]; + + //delka zpravy + message[0]=length-2; + //Opcode + message[1]=getOpcode(command); + //odesilatel + message[2]=0x04; + //status + message[3]=0x00; //to se musi najit, co jaky bit dela + + if (data!=NULL) { + //nahraju zpravu + for (i=0; i