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) == |
40 | if ( StdCan_Ret_class(rxMsg->Header) == CAN_MODULE_CLASS_ACT && |
| 41 | StdCan_Ret_direction(rxMsg->Header) == |
41 | StdCan_Ret_direction(rxMsg->Header) == DIRECTIONFLAG_TO_OWNER && |
| 42 | rxMsg->Header.ModuleType == |
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 |
47 | case CAN_MODULE_CMD_SPECIFIC_LCD_CLEAR: |
| 48 | lcd_clrscr(); |
48 | lcd_clrscr(); |
| 49 | break; |
49 | break; |
| 50 | 50 | ||
| 51 | case |
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 |
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 |
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 |
70 | case CAN_MODULE_CMD_SPECIFIC_LCD_SIZE: |
| 71 | StdCan_Set_class(txMsg.Header, |
71 | StdCan_Set_class(txMsg.Header, CAN_MODULE_CLASS_ACT); |
| 72 | StdCan_Set_direction(txMsg.Header, |
72 | StdCan_Set_direction(txMsg.Header, DIRECTIONFLAG_FROM_OWNER); |
| 73 | txMsg.Header.ModuleType = |
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 = |
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 |
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, |
90 | StdCan_Set_class(txMsg.Header, CAN_MODULE_CLASS_ACT); |
| 91 | StdCan_Set_direction(txMsg.Header, |
91 | StdCan_Set_direction(txMsg.Header, DIRECTIONFLAG_FROM_OWNER); |
| 92 | txMsg.Header.ModuleType = |
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 = |
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, |
109 | StdCan_Set_class(txMsg.Header, CAN_MODULE_CLASS_ACT); |
| 110 | StdCan_Set_direction(txMsg.Header, |
110 | StdCan_Set_direction(txMsg.Header, DIRECTIONFLAG_FROM_OWNER); |
| 111 | txMsg.Header.ModuleType = |
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 = |
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; |