This library is for the control of NJE-105/106. (which is the digital signage device made by Nagano Japan Radio Co., Ltd.)

Dependents:   NJE10XCtrlSample TrainInfoSample

NJE10XCtrl.h

Committer:
rinosh2
Date:
2010-11-16
Revision:
1:fb1109a73ce9
Parent:
0:3aa62049d1de

File content as of revision 1:fb1109a73ce9:

///////////////////////////////////////////////////////////////////////////////
// NJE10XCtrl: NJE-105/106 control lib   by rinos 2010
///////////////////////////////////////////////////////////////////////////////

#ifndef __NJE10XCTRL_H__
#define __NJE10XCTRL_H__

#include "mbed.h"

////////////////////////////////////////////////////////////////////////////////
// NJE10XCtrl Lib

class NJE10XCtrl {
    // defines /////////////////////////////////////////////////////////////////
public:
    // Attributes
    typedef enum {
        ATTR_GREEN,
        ATTR_RED,
        ATTR_YELLOW,
    } Attr1;

    typedef enum {
        ATTR_SCROLL,
        ATTR_SCROLL_R,
        ATTR_STOP,
        ATTR_FIX,
    } Attr2;

    typedef enum {
        ATTR_NORMAL,
        ATTR_BLINK,
        ATTR_REVERSE,
        ATTR_BLINK_REVERSE,
    } Attr3;
    
    // NJE command parameter
    typedef enum {
        OP_NORMAL,
        OP_AUTO,
        OP_POWERSAVE,
    } OpMode;

    typedef enum {
        FREEMODE_ON,
        FREEMODE_OFF,
    } FreeMode;

    typedef enum {
        SCROLL_SLOW,
        SCROLL_MIDDLE,
        SCROLL_FAST,
    } ScrollSpeed;

    typedef enum {
        BLINK_OFF,
        BLINK_SLOW,
        BLINK_MIDDLE,
        BLINK_FAST,
    } BlinkSpeed;

    // error code
    typedef enum {
        S_OK,
        S_WRITE_FAILED,
        S_BUFFER_OVERFLOW,
        S_INVALID_ID,
        S_INVALID_PARAM,
        
        S_NOT_SUPPORT, // not yet...
    } Status;

private:
    static const int MAX_DATA_BUF = 128;

    Serial    m_port;
    char m_buf[MAX_DATA_BUF + 1];
    int  m_size;
    

    // internal funcs
    Status sendCmd(const char* str);
    Status sendCmd(const char* str, int len);

	// Invalid method
protected:
	NJE10XCtrl(const NJE10XCtrl& v);
	const NJE10XCtrl& operator =(const NJE10XCtrl& v);

public:
    NJE10XCtrl(PinName tx_pin = p9, PinName rx_pin = p10);
    ~NJE10XCtrl();
    
    // Append Str/Attr to the internal buffer //////////////////////////////////
    Status add(char ch);                // append char to the internal buffer
    Status add(const char* str);        // append string to the internal buffer
    Status addAttr(Attr1 a1 = ATTR_GREEN, Attr2 a2 = ATTR_SCROLL, Attr3 a3 = ATTR_NORMAL);
    Status clear();                        // clear internal buffer
    int size() const { return m_size; }
    int left() const { return MAX_DATA_BUF - m_size; }
    
    // Set/Del Normal message (01-99) //////////////////////////////////////////
    Status setMessage(int id, const char* msg = 0,        // use internal buffer if msg is NULL
                    Attr1 a1 = ATTR_GREEN, Attr2 a2 = ATTR_SCROLL, Attr3 a3 = ATTR_NORMAL);
    Status delMessage(int id);                            // del message (1 to 99)
    Status setTitle(const char* msg = 0);                // use internal buffer if msg is NULL
    Status delTitle();                                    // del message title

    // Add/Clear free message (Max 20) /////////////////////////////////////////
    Status addFreeMessage(const char* msg = 0);    // use internal buffer if msg is NULL
    Status clearFreeMessage();                    // clear all free message
    Status addFreeCredit(const char* msg = 0);    // use internal buffer if msg is NULL
    Status clearFreeCredit();                    // clear all free credit

    // NJE control commands ////////////////////////////////////////////////////
    Status reset();
    
    // NJE show status /////////////////////////////////////////////////////////
    Status showTime();
    Status showContactCredit();
    Status showNewsCredit();
    Status showFreeCredit();

    // NJES commands ///////////////////////////////////////////////////////////
    Status setOpMode(OpMode mode = OP_NORMAL);
    Status setFreeMode(FreeMode mode = FREEMODE_ON);
    Status setScrollSpeed(ScrollSpeed speed = SCROLL_MIDDLE);
    Status setBlinkSpeed(BlinkSpeed speed = BLINK_FAST);
    Status setStopTime(int sec = 5);
};

#endif