Subversion Repositories HomeAutomation

Rev

Rev 944 | Rev 950 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 944 Rev 948
Line 35... Line 35...
35
void act_hd44780_HandleMessage(StdCan_Msg_t *rxMsg)
35
void act_hd44780_HandleMessage(StdCan_Msg_t *rxMsg)
36
{
36
{
37
    StdCan_Msg_t txMsg;
37
    StdCan_Msg_t txMsg;
38
    uint8_t n = 0;
38
    uint8_t n = 0;
39
 
39
 
40
    if (    StdCan_Ret_class(rxMsg->Header) == CAN_CLASS_MODULE_ACT &&
40
    if (    StdCan_Ret_class(rxMsg->Header) == CAN_MODULE_CLASS_ACT &&
41
        StdCan_Ret_direction(rxMsg->Header) == DIR_TO_OWNER &&
41
        StdCan_Ret_direction(rxMsg->Header) == DIRECTIONFLAG_TO_OWNER &&
42
        rxMsg->Header.ModuleType == CAN_TYPE_MODULE_act_hd44789 &&
42
        rxMsg->Header.ModuleType == CAN_MODULE_TYPE_ACT_HD44789 &&
43
        rxMsg->Header.ModuleId == act_hd44780_ID)
43
        rxMsg->Header.ModuleId == act_hd44780_ID)
44
    {
44
    {
45
        switch (rxMsg->Header.Command)
45
        switch (rxMsg->Header.Command)
46
        {
46
        {
47
        case CAN_CMD_MODULE_LCD_CLEAR:
47
        case CAN_MODULE_CMD_SPECIFIC_LCD_CLEAR:
48
        lcd_clrscr();
48
        lcd_clrscr();
49
        break;
49
        break;
50
 
50
 
51
        case CAN_CMD_MODULE_LCD_CURSOR:
51
        case CAN_MODULE_CMD_SPECIFIC_LCD_CURSOR:
52
        lcd_gotoxy(rxMsg->Data[0], rxMsg->Data[1]);
52
        lcd_gotoxy(rxMsg->Data[0], rxMsg->Data[1]);
53
        break;
53
        break;
54
 
54
 
55
        case CAN_CMD_MODULE_LCD_PRINTAT:
55
        case CAN_MODULE_CMD_SPECIFIC_LCD_TEXTAT:
56
        lcd_gotoxy(rxMsg->Data[0], rxMsg->Data[1]);
56
        lcd_gotoxy(rxMsg->Data[0], rxMsg->Data[1]);
57
        for (n = 2; n < rxMsg->Length; n++)
57
        for (n = 2; n < rxMsg->Length; n++)
58
        {
58
        {
59
            lcd_putc((char)rxMsg->Data[n]);
59
            lcd_putc((char)rxMsg->Data[n]);
60
        }
60
        }
61
        break;
61
        break;
62
       
62
       
63
        case CAN_CMD_MODULE_LCD_PRINT:
63
        case CAN_MODULE_CMD_SPECIFIC_LCD_TEXT:
64
        for (n = 0; n < rxMsg->Length; n++)
64
        for (n = 0; n < rxMsg->Length; n++)
65
        {
65
        {
66
            lcd_putc((char)rxMsg->Data[n]);
66
            lcd_putc((char)rxMsg->Data[n]);
67
        }
67
        }
68
        break;
68
        break;
69
 
69
 
70
        case CAN_CMD_MODULE_LCD_SIZE:
70
        case CAN_MODULE_CMD_SPECIFIC_LCD_SIZE:
71
        StdCan_Set_class(txMsg.Header, CAN_CLASS_MODULE_ACT);
71
        StdCan_Set_class(txMsg.Header, CAN_MODULE_CLASS_ACT);
72
        StdCan_Set_direction(txMsg.Header, DIR_FROM_OWNER);
72
        StdCan_Set_direction(txMsg.Header, DIRECTIONFLAG_FROM_OWNER);
73
        txMsg.Header.ModuleType = CAN_TYPE_MODULE_act_hd44789;
73
        txMsg.Header.ModuleType = CAN_MODULE_TYPE_ACT_HD44789;
74
        txMsg.Header.ModuleId = act_hd44780_ID;
74
        txMsg.Header.ModuleId = act_hd44780_ID;
75
        txMsg.Header.Command = CAN_CMD_MODULE_LCD_SIZE;
75
        txMsg.Header.Command = CAN_MODULE_CMD_SPECIFIC_LCD_SIZE;
76
        txMsg.Length = 2;
76
        txMsg.Length = 2;
77
 
77
 
78
        txMsg.Data[0] = act_hd44780_WIDTH;
78
        txMsg.Data[0] = act_hd44780_WIDTH;
79
        txMsg.Data[1] = act_hd44780_HEIGHT;
79
        txMsg.Data[1] = act_hd44780_HEIGHT;
80
 
80
 
81
        StdCan_Put(&txMsg);
81
        StdCan_Put(&txMsg);
82
        break;
82
        break;
83
 
83
 
84
        case CAN_CMD_MODULE_LCD_BACKLIGHT:
84
        case CAN_MODULE_CMD_SPECIFIC_LCD_BACKLIGHT:
85
        if (rxMsg->Length > 0)
85
        if (rxMsg->Length > 0)
86
            OCR1AL = rxMsg->Data[0];
86
            OCR1AL = rxMsg->Data[0];
87
 
87
 
88
        StdCan_Msg_t txMsg;
88
        StdCan_Msg_t txMsg;
89
 
89
 
90
        StdCan_Set_class(txMsg.Header, CAN_CLASS_MODULE_ACT);
90
        StdCan_Set_class(txMsg.Header, CAN_MODULE_CLASS_ACT);
91
        StdCan_Set_direction(txMsg.Header, DIR_FROM_OWNER);
91
        StdCan_Set_direction(txMsg.Header, DIRECTIONFLAG_FROM_OWNER);
92
        txMsg.Header.ModuleType = CAN_TYPE_MODULE_act_hd44789;
92
        txMsg.Header.ModuleType = CAN_MODULE_TYPE_ACT_HD44789;
93
        txMsg.Header.ModuleId = act_hd44780_ID;
93
        txMsg.Header.ModuleId = act_hd44780_ID;
94
        txMsg.Header.Command = CAN_CMD_MODULE_LCD_BACKLIGHT;
94
        txMsg.Header.Command = CAN_MODULE_CMD_SPECIFIC_LCD_BACKLIGHT;
95
        txMsg.Length = 1;
95
        txMsg.Length = 1;
96
 
96
 
97
        txMsg.Data[0] = OCR1AL;
97
        txMsg.Data[0] = OCR1AL;
98
 
98
 
99
        StdCan_Put(&txMsg);
99
        StdCan_Put(&txMsg);
Line 104... Line 104...
104
 
104
 
105
void act_hd44780_List(uint8_t ModuleSequenceNumber)
105
void act_hd44780_List(uint8_t ModuleSequenceNumber)
106
{
106
{
107
    StdCan_Msg_t txMsg;
107
    StdCan_Msg_t txMsg;
108
 
108
 
109
    StdCan_Set_class(txMsg.Header, CAN_CLASS_MODULE_ACT);
109
    StdCan_Set_class(txMsg.Header, CAN_MODULE_CLASS_ACT);
110
    StdCan_Set_direction(txMsg.Header, DIR_FROM_OWNER);
110
    StdCan_Set_direction(txMsg.Header, DIRECTIONFLAG_FROM_OWNER);
111
    txMsg.Header.ModuleType = CAN_TYPE_MODULE_act_hd44789;
111
    txMsg.Header.ModuleType = CAN_MODULE_TYPE_ACT_HD44789;
112
    txMsg.Header.ModuleId = act_hd44780_ID;
112
    txMsg.Header.ModuleId = act_hd44780_ID;
113
    txMsg.Header.Command = CAN_CMD_MODULE_NMT_LIST;
113
    txMsg.Header.Command = CAN_MODULE_CMD_GLOBAL_LIST;
114
    txMsg.Length = 6;
114
    txMsg.Length = 6;
115
 
115
 
116
    txMsg.Data[0] = NODE_HW_ID_BYTE0;
116
    txMsg.Data[0] = NODE_HW_ID_BYTE0;
117
    txMsg.Data[1] = NODE_HW_ID_BYTE1;
117
    txMsg.Data[1] = NODE_HW_ID_BYTE1;
118
    txMsg.Data[2] = NODE_HW_ID_BYTE2;
118
    txMsg.Data[2] = NODE_HW_ID_BYTE2;