Libraries and Example of mbed parallel bus using I2C port expanders

Dependencies:   HDSP253X mbed PCF8574_Bus

Status_Display.h

Committer:
wim
Date:
2011-08-20
Revision:
2:1dab1089c332
Child:
5:38b853bb1afa

File content as of revision 2:1dab1089c332:

/* Status_Display - LED status indicators
 * Copyright (c) 2011 Wim Huiskamp
 *
 * Released under the MIT License: http://mbed.org/license/mit
 *
 * version 0.2 Initial Release
*/
#ifndef _STATUS_DISPLAY_H
#define _STATUS_DISPLAY_H

//Useful stuff to simplify porting of some third party software
#include "Utils.h"

/*****************************************************************************/
/*********************  DEFINITIONS FOR STATUS DISPLAY ** ********************/
/*****************************************************************************/

// Specific delays for display operation
#define STATUS_1TCY_WAIT_MS         1

// Definitions for Latch1 of Status LEDs
#define D_STATUS_LED_MULT           0x01
#define D_STATUS_LED_LASER          0x02
#define D_STATUS_LED_BATT           0x04
#define D_STATUS_LED_TEMP           0x08
#define D_STATUS_LED_ENRGY          0x10
#define D_STATUS_LED_NOTUSED_15     0x20
#define D_STATUS_LED_NOTUSED_16     0x40
#define D_STATUS_BACKLIGHT          0x80

// Definitions for Latch2 of Status LEDs
#define D_STATUS_LED_NOTUSED_20     0x01
#define D_STATUS_LED_CODE           0x02
#define D_STATUS_LED_RANGE          0x04
#define D_STATUS_LED_DESIG          0x08
#define D_STATUS_LED_ADDR           0x10
#define D_STATUS_LED_FREQ           0x20
#define D_STATUS_LED_PATH           0x40
#define D_STATUS_LED_NOTUSED_27     0x80


// Definitions for LatchBrightness of Status LEDs
// Value indicates cd/m2
#define D_STATUS_LED_BRIGHT_000     0x00
#define D_STATUS_LED_BRIGHT_022     0x01
#define D_STATUS_LED_BRIGHT_053     0x02
#define D_STATUS_LED_BRIGHT_112     0x03
#define D_STATUS_LED_BRIGHT_253     0x04
#define D_STATUS_LED_BRIGHT_570     0x05
#define D_STATUS_LED_BRIGHT_129     0x06
#define D_STATUS_LED_BRIGHT_360     0x07

// control word masks for Status LEDs
#define STATUS_LED_BRIGHT_MASK      0x07 

// Display brightness modes
#define D_STATUS_LED_BRIGHT_OFF     D_STATUS_LED_BRIGHT_000
#define D_STATUS_LED_BRIGHT_LOW     D_STATUS_LED_BRIGHT_053
#define D_STATUS_LED_BRIGHT_MED     D_STATUS_LED_BRIGHT_570
#define D_STATUS_LED_BRIGHT_HGH     D_STATUS_LED_BRIGHT_360

// default display brightness
#define D_STATUS_LED_BRIGHT_DEF     D_STATUS_LED_BRIGHT_LOW

//Enums for Status LEDs
enum LED_Pin { LED_MULT, LED_LASER, LED_BATT, LED_TEMP, LED_ENRGY, LED_CODE, LED_RANGE, LED_DESIG, LED_ADDR, LED_FREQ, LED_PATH };
enum LED_State { LED_ON, LED_OFF};

//Enums for Brightness
enum Brightness { BRT_OFF, BRT_LOW, BRT_MED, BRT_HIGH };

/** Create a Status_Display object connected to the proper busses
 *
 * @param  PCF8574_DataBus data databus to connect to 
 * @param  PCF8574_EnableBus enable enablebus to connect to 
 * @param  MBED_ControlBus control controlbus to connect to 
*/
class Status_Display {
public:
    Status_Display(PCF8574_DataBus &databus,
                   PCF8574_EnableBus &enablebus, MBED_ControlBus &controlbus);
    void lamptest (LED_State led_state);
    void LED (LED_Pin led_pin, LED_State led_state);
    void NoGo(LED_State NoGo_state);
    void backlight (LED_State backlight_state);
    void set_brightness(uint8_t brightness);  
    void set_brightness(Brightness brightness);  
            
protected:
    PCF8574_DataBus &_databus;
    PCF8574_EnableBus &_enablebus;
    MBED_ControlBus &_controlbus;

    uint8_t _latch1;
    uint8_t _latch2;
    uint8_t _brightness;
//    void _write_latch1(char data);
//    void _write_latch2(char data);
    void _write_latch1();
    void _write_latch2();
    void _write_latchbrightness();                
    void _init(); 
          
};


#endif
/*****************************************************************************/
/******************************  END OF FILE  ********************************/
/*****************************************************************************/