Read up to 8 debounced switches from serial port

Dependencies:   mbed

Committer:
jm
Date:
Sat Feb 12 16:46:49 2011 +0000
Revision:
0:f3a5f6fe1c03
jmSwitch Command Line Interface Module

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jm 0:f3a5f6fe1c03 1 /*************************************************************************
jm 0:f3a5f6fe1c03 2 * @file jmMessages.c
jm 0:f3a5f6fe1c03 3 * @brief Control System Messages
jm 0:f3a5f6fe1c03 4 *
jm 0:f3a5f6fe1c03 5 * @date December 27,2010
jm 0:f3a5f6fe1c03 6 */
jm 0:f3a5f6fe1c03 7
jm 0:f3a5f6fe1c03 8 #include "jmCommands.h"
jm 0:f3a5f6fe1c03 9 #include "jmRingBuffer.h"
jm 0:f3a5f6fe1c03 10 #include "stdio.h"
jm 0:f3a5f6fe1c03 11 #include "jmMessages.h"
jm 0:f3a5f6fe1c03 12 #include "stdint.h"
jm 0:f3a5f6fe1c03 13
jm 0:f3a5f6fe1c03 14 uint8_t Help;
jm 0:f3a5f6fe1c03 15 uint8_t Feedback;
jm 0:f3a5f6fe1c03 16 uint8_t Echo;
jm 0:f3a5f6fe1c03 17
jm 0:f3a5f6fe1c03 18
jm 0:f3a5f6fe1c03 19 /** @brief Enable only help messages
jm 0:f3a5f6fe1c03 20 * @param none
jm 0:f3a5f6fe1c03 21 * @returns none
jm 0:f3a5f6fe1c03 22 */
jm 0:f3a5f6fe1c03 23 void InitMessages(void){
jm 0:f3a5f6fe1c03 24 Help = 1;
jm 0:f3a5f6fe1c03 25 Echo = 0;
jm 0:f3a5f6fe1c03 26 Feedback = 0;
jm 0:f3a5f6fe1c03 27 }
jm 0:f3a5f6fe1c03 28
jm 0:f3a5f6fe1c03 29 /** @brief Send all command names in a project
jm 0:f3a5f6fe1c03 30 * @param none
jm 0:f3a5f6fe1c03 31 * @returns none
jm 0:f3a5f6fe1c03 32 */
jm 0:f3a5f6fe1c03 33 void cli_list(void){
jm 0:f3a5f6fe1c03 34 int i,j;
jm 0:f3a5f6fe1c03 35 printf("Commands:\n");
jm 0:f3a5f6fe1c03 36 printf(".......................\n");
jm 0:f3a5f6fe1c03 37 // for each command
jm 0:f3a5f6fe1c03 38 for(i=0,j=0; i<nbCommands; i++,j++){
jm 0:f3a5f6fe1c03 39 // print name
jm 0:f3a5f6fe1c03 40 while(cmdNames[j]) printf("%c",cmdNames[j++]);
jm 0:f3a5f6fe1c03 41 printf("\n");
jm 0:f3a5f6fe1c03 42 }
jm 0:f3a5f6fe1c03 43 printf("........................\n");
jm 0:f3a5f6fe1c03 44 }
jm 0:f3a5f6fe1c03 45
jm 0:f3a5f6fe1c03 46 /** @brief Send Message Unknown Command from interpreter
jm 0:f3a5f6fe1c03 47 * @param none
jm 0:f3a5f6fe1c03 48 * @returns none
jm 0:f3a5f6fe1c03 49 */
jm 0:f3a5f6fe1c03 50 void UnknownCommand(void){
jm 0:f3a5f6fe1c03 51 printf("\n?\n");
jm 0:f3a5f6fe1c03 52 }
jm 0:f3a5f6fe1c03 53
jm 0:f3a5f6fe1c03 54 /** @brief Send Build Version Message
jm 0:f3a5f6fe1c03 55 * @param none
jm 0:f3a5f6fe1c03 56 * @returns none
jm 0:f3a5f6fe1c03 57 */
jm 0:f3a5f6fe1c03 58 void cli_version(void){
jm 0:f3a5f6fe1c03 59 printf(jmCLIG);
jm 0:f3a5f6fe1c03 60 }
jm 0:f3a5f6fe1c03 61
jm 0:f3a5f6fe1c03 62 /** @brief Help Command Line Control.
jm 0:f3a5f6fe1c03 63 * Enable/disable help messages
jm 0:f3a5f6fe1c03 64 * When enabled, Typing name only prints Command Format
jm 0:f3a5f6fe1c03 65 * @param none
jm 0:f3a5f6fe1c03 66 * @returns none
jm 0:f3a5f6fe1c03 67 */
jm 0:f3a5f6fe1c03 68 void cli_help(void){
jm 0:f3a5f6fe1c03 69 unsigned int value;
jm 0:f3a5f6fe1c03 70 if(ExtractUInteger(pLine,&value,0,1)){
jm 0:f3a5f6fe1c03 71 if(value == 1) printf("Help Enabled ! type command name to print its format\n");
jm 0:f3a5f6fe1c03 72 else printf("Help Disabled !\n");
jm 0:f3a5f6fe1c03 73
jm 0:f3a5f6fe1c03 74 Help = (uint8_t) value; // save status
jm 0:f3a5f6fe1c03 75 return;
jm 0:f3a5f6fe1c03 76 }
jm 0:f3a5f6fe1c03 77 // Error on input, show format
jm 0:f3a5f6fe1c03 78 if(Help)printf("help (value)0..1\n");
jm 0:f3a5f6fe1c03 79 // Ignore pending command line
jm 0:f3a5f6fe1c03 80 NextCommand(nl,pLine);
jm 0:f3a5f6fe1c03 81 }
jm 0:f3a5f6fe1c03 82
jm 0:f3a5f6fe1c03 83 /** @brief Feedback Command Line Control.
jm 0:f3a5f6fe1c03 84 * Enable/disable feedback messages
jm 0:f3a5f6fe1c03 85 * When enabled, feedback from user input commands are returned
jm 0:f3a5f6fe1c03 86 * @param none
jm 0:f3a5f6fe1c03 87 * @returns none
jm 0:f3a5f6fe1c03 88 */
jm 0:f3a5f6fe1c03 89 void cli_feedback(void){
jm 0:f3a5f6fe1c03 90 unsigned int value;
jm 0:f3a5f6fe1c03 91 if(ExtractUInteger(pLine,&value,0,1)){
jm 0:f3a5f6fe1c03 92 if(value == 1) printf("Feedback Enabled !\n");
jm 0:f3a5f6fe1c03 93 else printf("Feedback Disabled !\n");
jm 0:f3a5f6fe1c03 94
jm 0:f3a5f6fe1c03 95 Feedback = (uint8_t)value; // save status
jm 0:f3a5f6fe1c03 96 return;
jm 0:f3a5f6fe1c03 97 }
jm 0:f3a5f6fe1c03 98
jm 0:f3a5f6fe1c03 99 // Error on input, show format
jm 0:f3a5f6fe1c03 100 if(Help)printf("feedback (value)0..1\n");
jm 0:f3a5f6fe1c03 101 // Ignore pending command line
jm 0:f3a5f6fe1c03 102 NextCommand(nl,pLine);
jm 0:f3a5f6fe1c03 103 }
jm 0:f3a5f6fe1c03 104
jm 0:f3a5f6fe1c03 105 /** @brief Echo Command Line Control.
jm 0:f3a5f6fe1c03 106 * Enable/disable communication echoes
jm 0:f3a5f6fe1c03 107 * When enabled, user inputs are echoed back
jm 0:f3a5f6fe1c03 108 * @param none
jm 0:f3a5f6fe1c03 109 * @returns none
jm 0:f3a5f6fe1c03 110 */
jm 0:f3a5f6fe1c03 111 void cli_echo(void){
jm 0:f3a5f6fe1c03 112 unsigned int value;
jm 0:f3a5f6fe1c03 113 if(ExtractUInteger(pLine,&value,0,1)){
jm 0:f3a5f6fe1c03 114 if(value == 1) printf("Echo Enabled !\n");
jm 0:f3a5f6fe1c03 115 else printf("Echo Disabled !\n");
jm 0:f3a5f6fe1c03 116
jm 0:f3a5f6fe1c03 117 Echo = (uint8_t)value; // save status
jm 0:f3a5f6fe1c03 118 return;
jm 0:f3a5f6fe1c03 119 }
jm 0:f3a5f6fe1c03 120
jm 0:f3a5f6fe1c03 121 // Error on input, show format
jm 0:f3a5f6fe1c03 122 if(Help)printf("echo (value)0..1\n");
jm 0:f3a5f6fe1c03 123 // Ignore pending command line
jm 0:f3a5f6fe1c03 124 NextCommand(nl,pLine);
jm 0:f3a5f6fe1c03 125 }