Hallo,
ich bin noch auf einen Beitrag von ewavr im
int. Forum vom Dezember 2008 gestoßen, aber das hat wohl keiner in den trunk eingepflegt.
Maybe I found replacement of PostLedMessage for A590:
int _LEDDrive(int led, int action); // only for a590 !!!
so, try this function:
void ubasic_set_led(int led, int state, int bright)
{
_LEDDrive(led, state<=1 ? !state : state);
}
Address of LEDDrive is 0xFFC34CE0 for 1.00E
Mit Hilfe von CHDKLover kann ich die dort angegebene LEDDrive-Adresse auch für die Firmware 1.01B bestätigen.
Bei neueren Kameras wird der uBasic-Befehl SET_LED(led status helligkeit) mit der Codezeile
- Code: Alles auswählen
_LEDDrive(led, state<=1 ? !state : state);
umgesetzt. Der Parameter "helligkeit" bleibt dabei ungenutzt. Dafür kann "status" weitere Werte annehmen. Diese habe ich im Quelltext der SX1 entdeckt und auch bei meiner A590 erfolgreich getested. Die dort angegeben Wiederholfrequenzen könnten passen.
- Code: Alles auswählen
Gültige Werte für STATUS bei Portierungen mit _LEDDrive:
0 - LED aus
1 - LED ein
2 - LED blinkt mit 2 Hz (ist kürzer ein als aus)
3 - LED blinkt sehr schnell (etwa 5 Hz)
4 - LED blinkt etwa mit 2,8 Hz (ist länger ein als aus)
5 - LED blinkt 3 mal sehr schnell und bleibt dann aus
6 - LED blinkt mit 1 Hz (ein und aus sind gleichlang)
Ich habe eine Diff-Datei (erstellt mit CHDKShell) für die A590 Firmware 1.00E und 1.01B angehängt. Dabei habe ich die FW1.00E nicht testen können. Aber die Routinenadresse stammt ja von dieser Version und der Compiler (CHDKShell) hat keine Fehler gemeldet.
Gültige Parameter für "led" sind 4, 5, 7, 8, 9 mit den Zuordungen des Handbuches.
Gruß Rudi