Changeset 22 for trunk


Ignore:
Timestamp:
Mar 4, 2012, 11:50:12 PM (9 years ago)
Author:
Andi
Message:
  • Added day mode (#6)
  • Added serial mode change (#7)
  • Cleaned up main state machine
  • Removed version information from file header (use svn version information)
Location:
trunk
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/adc.c

    r11 r22  
    22/**
    33 *       @author Andreas Hummel
    4  * / create date 27.12.2011
    5  * / last change 07.02.2012
    6  *      @version 0.90
    74 *     @defgroup adc Analog/digital conversion module (adc.c)
    85 *        @brief This module provides a simple a/d conversion function
  • trunk/adc.h

    r11 r22  
    22/**
    33 *       @author Andreas Hummel
    4  * / create date 27.12.2011
    5  * / last change 07.02.2012
    6  *      @version 0.90
    74 *     @defgroup adc Analog/digital conversion module (adc.c)
    85 *        @brief This module provides a simple a/d conversion function
  • trunk/configuration.c

    r11 r22  
    22/**
    33 *       @author Andreas Hummel
    4  * / create date 03.12.2011
    5  * / last change 07.02.2012
    6  *      @version 0.90
    74 *     @defgroup configuration EEPROM config module (configuration.c)
    85 *        @brief This module provides access to the configuration stored in the EEPROM
  • trunk/configuration.h

    r11 r22  
    22/**
    33 *       @author Andreas Hummel
    4  * / create date 03.12.2011
    5  * / last change 07.02.2012
    6  *      @version 0.90
    74 *     @defgroup configuration EEPROM config module (configuration.c)
    85 *        @brief This module provides access to the configuration stored in the EEPROM
  • trunk/main.c

    r11 r22  
    22/**
    33 *       @author Andreas Hummel
    4  * / create date 01.11.2011
    5  * / last change 07.02.2012
    6  *      @version 0.90
    74 *     @defgroup main CatFlap main program. (main.c)
    85 *        @brief This module is the entry point and controls the user interface of the catflap.
     
    4138
    4239/// Serial command character I, opens the incoming lock
    43 #define SERIAL_COMMAND_OPEN_IN          'I'
     40#define SERIAL_COMMAND_OPEN_IN  'I'
    4441/// Serial command character B, beeps
    45 #define SERIAL_COMMAND_BEEP                     'B'
     42#define SERIAL_COMMAND_BEEP             'B'
    4643/// Serial command character P, prints status and config to serial port
    47 #define SERIAL_COMMAND_PRINT            'P'
     44#define SERIAL_COMMAND_PRINT    'P'
     45/// Serial command character N, sets night mode
     46#define SERIAL_COMMAND_NIGHT    'N'
     47/// Serial command character D, sets day mode
     48#define SERIAL_COMMAND_DAY              'D'
     49/// Serial command character V, sets vet mode
     50#define SERIAL_COMMAND_VET              'V'
     51/// Serial command character X, sets normal mode
     52#define SERIAL_COMMAND_NORMAL   'X'
    4853
    4954#define STATE_BEGIN                     0
     
    5358#define STATE_PROGRAM                   4
    5459#define STATE_CONFIG                    5
     60#define STATE_NORMAL_DAY                6
    5561
    5662#define CONFIG_POS_EXIT                 1
     
    268274                                Beep(100);
    269275                                printf("OK - Beep\n");
     276                                break;
     277                        case SERIAL_COMMAND_NIGHT:
     278                                if(STATE==STATE_NORMAL_NORMAL || STATE==STATE_NORMAL_DOC || STATE==STATE_NORMAL_DAY)
     279                                {
     280                                        STATE = STATE_NORMAL_NIGHT;
     281                                        printf("OK - Night mode\n");
     282                                }
     283                                else
     284                                        printf("ERR - Bad mode\n");
     285                                break;
     286                        case SERIAL_COMMAND_DAY:
     287                                if(STATE==STATE_NORMAL_NORMAL || STATE==STATE_NORMAL_DOC || STATE==STATE_NORMAL_NIGHT)
     288                                {
     289                                        STATE = STATE_NORMAL_DAY;
     290                                        printf("OK - Day mode\n");
     291                                }
     292                                else
     293                                        printf("ERR - Bad mode\n");
     294                                break;
     295                        case SERIAL_COMMAND_NORMAL:
     296                                if(STATE==STATE_NORMAL_DAY || STATE==STATE_NORMAL_DOC || STATE==STATE_NORMAL_NIGHT)
     297                                {
     298                                        STATE = STATE_NORMAL_NORMAL;
     299                                        printf("OK - Normal mode\n");
     300                                }
     301                                else
     302                                        printf("ERR - Bad mode\n");
     303                                break;
     304                        case SERIAL_COMMAND_VET:
     305                                if(STATE==STATE_NORMAL_DAY || STATE==STATE_NORMAL_NORMAL || STATE==STATE_NORMAL_NIGHT)
     306                                {
     307                                        STATE = STATE_NORMAL_DOC;
     308                                        printf("OK - Vet mode\n");
     309                                }
     310                                else
     311                                        printf("ERR - Bad mode\n");
    270312                                break;
    271313                        case SERIAL_COMMAND_PRINT:
     
    462504        // If in normal mode beep and...
    463505        Beep(100);
    464         // ...toggle night mode
    465         if(STATE == STATE_NORMAL_NORMAL)
    466                 STATE = STATE_NORMAL_NIGHT;
    467         else if(STATE == STATE_NORMAL_DOC || STATE == STATE_NORMAL_NIGHT)
    468                 STATE = STATE_NORMAL_NORMAL;
     506        if(time < BUTTON_LONG_TIME)
     507        {
     508                // ...toggle night mode
     509                if(STATE == STATE_NORMAL_NORMAL)
     510                        STATE = STATE_NORMAL_NIGHT;
     511                else if(STATE == STATE_NORMAL_DOC || STATE == STATE_NORMAL_NIGHT || STATE == STATE_NORMAL_DAY)
     512                        STATE = STATE_NORMAL_NORMAL;
     513        }
     514        else
     515        {
     516                // If pressed long
     517                // ...toggle day mode
     518                if(STATE == STATE_NORMAL_NORMAL)
     519                        STATE = STATE_NORMAL_DAY;
     520        }
    469521}
    470522
     
    503555
    504556        // If in normal mode...
     557        Beep(100);
    505558        if(time < BUTTON_LONG_TIME)
    506559        {
    507560                // Pressed short -> Toggle Doc mode
    508                 Beep(100);
    509561                if(STATE == STATE_NORMAL_NORMAL)
    510562                        STATE = STATE_NORMAL_DOC;
    511                 else if(STATE == STATE_NORMAL_DOC || STATE == STATE_NORMAL_NIGHT)
     563                else if(STATE == STATE_NORMAL_DOC || STATE == STATE_NORMAL_NIGHT || STATE == STATE_NORMAL_DAY)
    512564                        STATE = STATE_NORMAL_NORMAL;
    513565        }
     
    515567        {
    516568                // Pressed long -> Program new cats
    517                 Beep(100);
    518569                OLD_STATE = STATE;
    519570                STATE = STATE_PROGRAM;
     
    791842                                        blink_green=FALSE;
    792843                                }
    793                                 // Loops
    794                                 serial_input_loop();
    795                                 button_input_loop();
    796                                 perform_timer();
    797844                                break;
    798845                        case STATE_NORMAL_NIGHT:
     
    807854                                        blink_green=FALSE;
    808855                                }
    809                                 // Loops
    810                                 serial_input_loop();
    811                                 button_input_loop();
    812                                 perform_timer();
     856                                break;
     857                        case STATE_NORMAL_DAY:
     858                                {
     859                                        // In day mode, the door is locked if its not dark
     860                                        SetLock(LOCK_RED,!is_dark);
     861                                        // Blink green LED if in day mode
     862                                        blink_green=TRUE;
     863                                        // Enable red LED if its day
     864                                        LedRed(!is_dark);
     865                                        blink_red=FALSE;
     866                                }
    813867                                break;
    814868                        case STATE_NORMAL_DOC:
     
    819873                                blink_red=TRUE;
    820874                                blink_green=FALSE;
    821                                 // Loops
    822                                 serial_input_loop();
    823                                 button_input_loop();
    824                                 perform_timer();
    825875                                break;
    826876                        case STATE_CONFIG:
     
    830880                                LedRed(FALSE);
    831881                                LedGreen(TRUE);
    832                                 // Loops
    833                                 serial_input_loop();
    834                                 button_input_loop();
    835                                 perform_timer();
    836882                                break;
    837883                        case STATE_PROGRAM:
     
    840886                                blink_green=TRUE;
    841887                                blink_red=FALSE;
    842                                 // Loops
    843                                 serial_input_loop();
    844                                 button_input_loop();
    845                                 perform_timer();
    846                                 break;
    847                 }
     888                                break;
     889                }
     890
     891                // Loops
     892                serial_input_loop();
     893                button_input_loop();
     894                perform_timer();
    848895
    849896        #ifdef HAS_FLAP_POTI
  • trunk/peripherals.c

    r11 r22  
    22/**
    33 *       @author Andreas Hummel
    4  * / create date 05.11.2011
    5  * / last change 07.02.2012
    6  *      @version 0.90
    74 *     @defgroup peripheral Peripheral definition and control module (peripherals.c)
    85 *        @brief This module provides access to the peripheral components of the MCU
  • trunk/peripherals.h

    r14 r22  
    22/**
    33 *       @author Andreas Hummel
    4  * / create date 05.11.2011
    5  * / last change 07.02.2012
    6  *      @version 0.90
    74 *     @defgroup peripheral Peripheral definition and control module (peripherals.c)
    85 *        @brief This module provides access to the peripheral components of the MCU
  • trunk/rfid.c

    r11 r22  
    22/**
    33 *       @author Andreas Hummel
    4  * / create date 01.11.2011
    5  * / last change 07.02.2012
    6  *      @version 0.90
    74 *     @defgroup rfid RFID receiving and decoding module (rfid.c)
    85 *        @brief This module receives (from the analog comparator) and decodes the animal tag (ISO11784/ISO11785) data.
  • trunk/rfid.h

    r11 r22  
    22/**
    33 *       @author Andreas Hummel
    4  * / create date 01.11.2011
    5  * / last change 07.02.2012
    6  *      @version 0.90
    74 *     @defgroup rfid RFID receiving and decoding module (rfid.c)
    85 *        @brief This module receives (from the analog comparator) and decodes the animal tag (ISO11784/ISO11785) data.
  • trunk/ser.c

    r11 r22  
    22/**
    33 *       @author Andreas Hummel
    4  * / create date 06.11.2011
    5  * / last change 07.02.2012
    6  *      @version 0.90
    74 *     @defgroup ser Serial communication module (ser.c)
    85 *        @brief This module provides serial communication functions
  • trunk/ser.h

    r11 r22  
    22/**
    33 *       @author Andreas Hummel
    4  * / create date 06.11.2011
    5  * / last change 07.02.2012
    6  *      @version 0.90
    74 *     @defgroup ser Serial communication module (ser.c)
    85 *        @brief This module provides serial communication functions
  • trunk/timer.c

    r11 r22  
    22/**
    33 *       @author Andreas Hummel
    4  * / create date 03.12.2011
    5  * / last change 07.02.2012
    6  *      @version 0.90
    74 *     @defgroup timer Timer module (timer.c)
    85 *        @brief This module provides a simple timer facility.
  • trunk/timer.h

    r11 r22  
    22/**
    33 *       @author Andreas Hummel
    4  * / create date 03.12.2011
    5  * / last change 07.02.2012
    6  *      @version 0.90
    74 *     @defgroup timer Timer module (timer.c)
    85 *        @brief This module provides a simple timer facility.
  • trunk/types.h

    r11 r22  
    22/**
    33 *       @author Andreas Hummel
    4  * / create date 05.11.2011
    5  * / last change 07.02.2012
    6  *      @version 0.90
    74 *     @defgroup types Type and version definition file (types.h)
    85 *        @brief This module contains type and version definitions.
     
    4643#define hi8(x) ((x)>>8)
    4744/// Version
    48 #define VERSION "CatFlap V0.90\n"
     45#define VERSION "CatFlap V0.95\n"
    4946
    5047/// Uncomment if you want to debug the RFID data
Note: See TracChangeset for help on using the changeset viewer.