Rev 587 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed
| Rev 587 | Rev 588 | ||
|---|---|---|---|
| Line 16... | Line 16... | ||
| 16 | channel_defs[i].value = 0; |
16 | channel_defs[i].value = 0; |
| 17 | } |
17 | } |
| 18 | 18 | ||
| 19 | /* CHANNEL_SUBCLASS_IDENTIFY */ |
19 | /* CHANNEL_SUBCLASS_IDENTIFY */ |
| 20 | 20 | ||
| - | 21 | txMsg.Id = (CAN_CHANNEL << CAN_SHIFT_CLASS) |
|
| 21 |
|
22 | | (CHANNEL_SUBCLASS_IDENTIFY << CHANNEL_SHIFT_SUBCLASS) |
| - | 23 | | (NODE_ID << CHANNEL_SHIFT_NODEID); |
|
| 22 | txMsg.ExtendedFlag = 1; |
24 | txMsg.ExtendedFlag = 1; |
| 23 | txMsg.RemoteFlag = 0; |
25 | txMsg.RemoteFlag = 0; |
| 24 | 26 | ||
| 25 | txMsg.DataLength = 1; |
27 | txMsg.DataLength = 1; |
| 26 | txMsg.Data.bytes[0] = CHANNEL_COUNT; |
28 | txMsg.Data.bytes[0] = CHANNEL_COUNT; |
| Line 81... | Line 83... | ||
| 81 | } |
83 | } |
| 82 | return CHANNEL_FAIL; |
84 | return CHANNEL_FAIL; |
| 83 | 85 | ||
| 84 | 86 | ||
| 85 | 87 | ||
| 86 | - | ||
| - | 88 | #if CHANNEL_ENABLE_NAME |
|
| 87 | case CHANNEL_SUBCLASS_CHN_NAME: |
89 | case CHANNEL_SUBCLASS_CHN_NAME: |
| 88 | for( i=0; i<CHANNEL_COUNT; i++ ) { |
90 | for( i=0; i<CHANNEL_COUNT; i++ ) { |
| 89 | if( channel_defs[i].channel == channel ) { |
91 | if( channel_defs[i].channel == channel ) { |
| 90 | for( j=0; j<msg->DataLength; j++) { |
92 | for( j=0; j<msg->DataLength; j++) { |
| 91 | channel_defs[i].name[j]=msg->Data.bytes[j]; |
93 | channel_defs[i].name[j]=msg->Data.bytes[j]; |
| 92 | } |
94 | } |
| 93 | channel_defs[i].name[j]='\0'; |
95 | channel_defs[i].name[j]='\0'; |
| 94 | } |
96 | } |
| 95 | } |
97 | } |
| 96 | return CHANNEL_OK; |
98 | return CHANNEL_OK; |
| - | 99 | #endif |
|
| 97 | 100 | ||
| 98 | - | ||
| 99 | - | ||
| - | 101 | #if CHANNEL_ENABLE_TYPE |
|
| 100 | case CHANNEL_SUBCLASS_CHN_TYPE: |
102 | case CHANNEL_SUBCLASS_CHN_TYPE: |
| 101 | for( i=0; i<CHANNEL_COUNT; i++ ) { |
103 | for( i=0; i<CHANNEL_COUNT; i++ ) { |
| 102 | if( channel_defs[i].channel == channel ) { |
104 | if( channel_defs[i].channel == channel ) { |
| 103 | channel_defs[i].type_k = msg->Data.words[0]; |
105 | channel_defs[i].type_k = msg->Data.words[0]; |
| 104 | channel_defs[i].type_m = msg->Data.words[1]; |
106 | channel_defs[i].type_m = msg->Data.words[1]; |
| 105 | - | ||
| - | 107 | #if CHANNEL_ENABLE_TYPE_NAME |
|
| 106 | for( j=0; j<msg->DataLength-4; j++) { |
108 | for( j=0; j<msg->DataLength-4; j++) { |
| 107 | channel_defs[i].type[j]=msg->Data.bytes[j+4]; |
109 | channel_defs[i].type[j]=msg->Data.bytes[j+4]; |
| 108 | } |
110 | } |
| 109 | channel_defs[i].type[j]='\0'; |
111 | channel_defs[i].type[j]='\0'; |
| - | 112 | #endif |
|
| 110 | } |
113 | } |
| 111 | } |
114 | } |
| 112 | break; |
115 | break; |
| - | 116 | #endif |
|
| 113 | } |
117 | } |
| 114 | 118 | ||
| 115 | return CHANNEL_FAIL; |
119 | return CHANNEL_FAIL; |
| 116 | } |
120 | } |
| 117 | 121 | ||
| 118 | void Channel_Bind( uint8_t id, uint8_t channel ) { |
122 | void Channel_Bind( uint8_t id, uint8_t channel ) { |
| 119 | channel_defs[id].channel = channel; |
123 | channel_defs[id].channel = channel; |
| 120 | } |
124 | } |
| 121 | 125 | ||
| 122 | uint16_t Channel_GetValue( uint8_t id ) { |
126 | uint16_t Channel_GetValue( uint8_t id ) { |
| 123 | return channel_defs[id].value; |
127 | return channel_defs[id].value; |
| - | 128 | } |
|
| - | 129 | ||
| - | 130 | uint8_t Channel_SetValue( uint8_t id, uint16_t value ) { |
|
| - | 131 | uint16_t channel; |
|
| - | 132 | Can_Message_t txMsg; |
|
| - | 133 | ||
| - | 134 | channel = channel_defs[id].channel; |
|
| - | 135 | if( channel == 0 ) return CHANNEL_FAIL; |
|
| - | 136 | ||
| - | 137 | txMsg.Id = (CAN_CHANNEL << CAN_SHIFT_CLASS) |
|
| - | 138 | | (CHANNEL_SUBCLASS_DATA << CHANNEL_SHIFT_SUBCLASS) |
|
| - | 139 | | (channel << CHANNEL_SHIFT_CHANNEL) |
|
| - | 140 | | (NODE_ID << CHANNEL_SHIFT_NODEID); |
|
| - | 141 | ||
| - | 142 | txMsg.ExtendedFlag = 1; |
|
| - | 143 | txMsg.RemoteFlag = 0; |
|
| - | 144 | txMsg.DataLength = 2; |
|
| - | 145 | txMsg.Data.words[0] = value; |
|
| - | 146 | ||
| - | 147 | BIOS_CanSend( &txMsg ); |
|
| - | 148 | ||
| - | 149 | channel_defs[id].value = value; |
|
| - | 150 | ||
| - | 151 | #if CHANNEL_SET_SELF |
|
| - | 152 | Channel_Callback_Value( id, value ); |
|
| - | 153 | #endif |
|
| - | 154 | ||
| - | 155 | return CHANNEL_OK; |
|
| 124 | } |
156 | } |