]> git.cryptolib.org Git - avr-crypto-lib.git/blob - cli.c
insereated GPLv3 stub
[avr-crypto-lib.git] / cli.c
1 /* cli.c */
2 /*
3     This file is part of the Crypto-avr-lib/microcrypt-lib.
4     Copyright (C) 2008  Daniel Otte (daniel.otte@rub.de)
5
6     This program is free software: you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation, either version 3 of the License, or
9     (at your option) any later version.
10
11     This program is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15
16     You should have received a copy of the GNU General Public License
17     along with this program.  If not, see <http://www.gnu.org/licenses/>.
18 */
19 /**
20  * 
21  * author: Daniel Otte
22  * email:  daniel.otte@rub.de
23  * license: GPLv3
24  * 
25  * components to help implementing simple command based interaction
26  * 
27  **/
28  
29 #include <stdint.h>
30 #include <string.h>
31 #include <avr/pgmspace.h>
32
33 int16_t findstring_d0(const char* str, const char* v){
34         uint8_t i=0;
35         while(*v){      
36                 if(!strcmp(str, v)){
37                         return i;
38                 }
39                 while(*v++) /* go to the next string */
40                 ;
41                 ++i;
42         }
43         return -1;
44 }
45  
46 int16_t findstring_d0_P(const char* str, PGM_P v){
47         uint8_t i=0;
48         while(pgm_read_byte(v)){        
49                 if(!strcmp_P(str, v)){
50                         return i;
51                 }
52                 while(pgm_read_byte(v++)) /* go to the next string */
53                 ;
54                 ++i;
55         }
56         return -1;
57
58
59 int16_t execcommand_d0_P(const char* str, PGM_P v, void(*fpt[])(void) ){
60         uint8_t i=0;
61         while(pgm_read_byte(v)){        
62                 if(!strcmp_P(str, v)){
63                         (fpt[i])();
64                         return i;
65                 }
66                 while(pgm_read_byte(v++)) /* go to the next string */
67                 ;
68                 ++i;
69         }
70         return -1;
71 }
72
73