Rev 1619 | Rev 1626 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1619 | Rev 1622 | ||
---|---|---|---|
Line 8... | Line 8... | ||
8 | #include <string.h> |
8 | #include <string.h> |
9 | #include <avr/pgmspace.h> |
9 | #include <avr/pgmspace.h> |
10 | #include "main.h" |
10 | #include "main.h" |
11 | #include "uart.h" |
11 | #include "uart.h" |
12 | #include "libfc.h" |
12 | #include "libfc.h" |
- | 13 | #include "eeprom.h" |
|
Line 13... | Line 14... | ||
13 | 14 | ||
14 | 15 | ||
15 | #define FC_ADDRESS 1 |
16 | #define FC_ADDRESS 1 |
- | 17 | #define NC_ADDRESS 2 |
|
Line 16... | Line 18... | ||
16 | #define NC_ADDRESS 2 |
18 | #define MK3MAG_ADDRESS 3 |
17 | #define MK3MAG_ADDRESS 3 |
19 | #define BL_CTRL_ADDRESS 5 |
18 | 20 | ||
19 | #define ABO_TIMEOUT 4000 // disable abo after 4 seconds |
21 | #define ABO_TIMEOUT 4000 // disable abo after 4 seconds |
Line 295... | Line 297... | ||
295 | // -------------------------------------------------------------------------- |
297 | // -------------------------------------------------------------------------- |
296 | void BearbeiteRxDaten(void) |
298 | void BearbeiteRxDaten(void) |
297 | { |
299 | { |
298 | if(!NeuerDatensatzEmpfangen) return; |
300 | if(!NeuerDatensatzEmpfangen) return; |
Line 299... | Line 301... | ||
299 | 301 | ||
300 | unsigned char tempchar1, tempchar2; |
302 | unsigned char tempchar1; |
301 | Decode64(); // dekodiere datenblock im Empfangsbuffer |
303 | Decode64(); // dekodiere datenblock im Empfangsbuffer |
302 | switch(RxdBuffer[1]-'a') // check for Slave Address |
304 | switch(RxdBuffer[1]-'a') // check for Slave Address |
303 | { |
305 | { |
304 | case FC_ADDRESS: // FC special commands |
306 | case FC_ADDRESS: // FC special commands |
Line 317... | Line 319... | ||
317 | PcZugriff = 255; |
319 | PcZugriff = 255; |
318 | break; |
320 | break; |
Line 319... | Line 321... | ||
319 | 321 | ||
320 | case 'n':// "Get Mixer |
322 | case 'n':// "Get Mixer |
321 | while(!UebertragungAbgeschlossen); |
323 | while(!UebertragungAbgeschlossen); |
322 | SendOutData('N', FC_ADDRESS, 1, (unsigned char *) &Mixer,sizeof(Mixer)); |
324 | SendOutData('N', FC_ADDRESS, 1, (unsigned char *) &Mixer, sizeof(Mixer) - 1); |
Line 323... | Line 325... | ||
323 | break; |
325 | break; |
324 | - | ||
325 | case 'm':// "Write Mixer |
326 | |
326 | while(!UebertragungAbgeschlossen); |
327 | case 'm':// "Write Mixer |
327 | if(pRxData[0] == MIXER_REVISION) |
328 | if(pRxData[0] == EEMIXER_REVISION) |
328 | { |
329 | { |
329 | memcpy(&Mixer, (unsigned char *)pRxData, sizeof(Mixer)); |
330 | memcpy(&Mixer, (unsigned char *)pRxData, sizeof(Mixer) - 1); |
330 | eeprom_write_block(&Mixer, (void*)(EEPROM_ADR_MIXER_TABLE), sizeof(Mixer)); |
331 | MixerTable_WriteToEEProm(); |
331 | tempchar1 = 1; |
332 | tempchar1 = 1; |
- | 333 | } |
|
- | 334 | else |
|
- | 335 | { |
|
- | 336 | tempchar1 = 0; |
|
332 | } |
337 | } |
333 | else tempchar1 = 0; |
338 | while(!UebertragungAbgeschlossen); |
Line 334... | Line 339... | ||
334 | SendOutData('M', FC_ADDRESS, 1, &tempchar1, sizeof(tempchar1)); |
339 | SendOutData('M', FC_ADDRESS, 1, &tempchar1, sizeof(tempchar1)); |
335 | break; |
340 | break; |
Line 341... | Line 346... | ||
341 | 346 | ||
342 | case 'q':// "Get"-Anforderung für Settings |
347 | case 'q':// "Get"-Anforderung für Settings |
343 | // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
348 | // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
344 | if(pRxData[0] == 0xFF) |
349 | if(pRxData[0] == 0xFF) |
345 | { |
350 | { |
346 | pRxData[0] = GetActiveParamSetNumber(); |
351 | pRxData[0] = GetActiveParamSet(); |
347 | } |
352 | } |
348 | // limit settings range |
353 | // limit settings range |
349 | if(pRxData[0] < 1) pRxData[0] = 1; // limit to 5 |
354 | if(pRxData[0] < 1) pRxData[0] = 1; // limit to 5 |
350 | else if(pRxData[0] > 5) pRxData[0] = 5; // limit to 5 |
355 | else if(pRxData[0] > 5) pRxData[0] = 5; // limit to 5 |
351 | // load requested parameter set |
- | |
352 | ReadParameterSet(pRxData[0], (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
- | |
353 | 356 | // load requested parameter set |
|
354 | while(!UebertragungAbgeschlossen); |
357 | ParamSet_ReadFromEEProm(pRxData[0]); |
355 | tempchar1 = pRxData[0]; |
358 | tempchar1 = pRxData[0]; |
356 | tempchar2 = EE_DATENREVISION; |
359 | while(!UebertragungAbgeschlossen); |
357 | SendOutData('Q', FC_ADDRESS, 3, &tempchar1, sizeof(tempchar1), &tempchar2, sizeof(tempchar2), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
360 | SendOutData('Q', FC_ADDRESS, 2, &tempchar1, sizeof(tempchar1), (unsigned char *) &EE_Parameter, sizeof(EE_Parameter) - 1); |
Line 358... | Line 361... | ||
358 | break; |
361 | break; |
359 | 362 | ||
360 | case 's': // Parametersatz speichern |
363 | case 's': // Parametersatz speichern |
361 | if((1 <= pRxData[0]) && (pRxData[0] <= 5) && (pRxData[1] == EE_DATENREVISION)) // check for setting to be in range |
364 | if((1 <= pRxData[0]) && (pRxData[0] <= 5) && (pRxData[1] == EEPARAM_REVISION)) // check for setting to be in range |
362 | { |
365 | { |
363 | memcpy((unsigned char *) &EE_Parameter.Kanalbelegung[0], (unsigned char *)&pRxData[2], STRUCT_PARAM_LAENGE); |
366 | memcpy(&EE_Parameter, (uint8_t*)&pRxData[1], sizeof(EE_Parameter) - 1); |
364 | WriteParameterSet(pRxData[0], (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
367 | ParamSet_WriteToEEProm(pRxData[0]); |
365 | Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
- | |
366 | Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L; |
368 | Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
367 | SetActiveParamSetNumber(pRxData[0]); |
369 | Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L; |
368 | tempchar1 = GetActiveParamSetNumber(); |
370 | tempchar1 = GetActiveParamSet(); |
369 | } |
371 | } |
370 | else |
372 | else |
371 | { |
373 | { |
Line 376... | Line 378... | ||
376 | if(!MotorenEin) Piep(tempchar1,110); |
378 | if(!MotorenEin) Piep(tempchar1,110); |
377 | LipoDetection(0); |
379 | LipoDetection(0); |
378 | LIBFC_ReceiverInit(); |
380 | LIBFC_ReceiverInit(); |
379 | break; |
381 | break; |
380 | case 'f': // auf anderen Parametersatz umschalten |
382 | case 'f': // auf anderen Parametersatz umschalten |
381 | if((1 <= pRxData[0]) && (pRxData[0] <= 5)) SetActiveParamSetNumber(pRxData[0]); |
383 | if((1 <= pRxData[0]) && (pRxData[0] <= 5)) ParamSet_ReadFromEEProm(pRxData[0]); |
382 | tempchar1 = pRxData[0]; |
384 | tempchar1 = GetActiveParamSet(); |
383 | ReadParameterSet(tempchar1, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
- | |
384 | while(!UebertragungAbgeschlossen); |
385 | while(!UebertragungAbgeschlossen); |
385 | SendOutData('F', FC_ADDRESS, 1, &tempchar1, sizeof(tempchar1)); |
386 | SendOutData('F', FC_ADDRESS, 1, &tempchar1, sizeof(tempchar1)); |
386 | if(!MotorenEin) Piep(tempchar1,110); |
387 | if(!MotorenEin) Piep(tempchar1,110); |
387 | LipoDetection(0); |
388 | LipoDetection(0); |
388 | LIBFC_ReceiverInit(); |
389 | LIBFC_ReceiverInit(); |