Hallo,
Folgendes Problem: Ich bin gerade im rfmode X, möchte kurz etwas auf rfmode Y senden, und dann wieder zurück in den alten rfmode X.
Im Moment ist das für verschiede Kombinationen von X und Y in riesigen 'if's' gelöst.
Angehängter Patch vereinheitlicht alle asksin_on/moritz_on/cc_on/fastrf_on etc in ein cc_rf_mode
typedef enum {
RF_OFF = 0,
RF_SLOWRF,
RF_FASTRF,
RF_INTERTECHNO,
RF_ASKSIN,
RF_MORITZ,
RF_RWE,
} cc_rf_mode_t;
extern cc_rf_mode_t cc_rf_mode;
Insbesondere ist die Funktion
void ccSetRfMode(cc_rf_mode_t mode);
hinzugekommen. Wenn dieser Patch auf Gegenliebe stößt, dann
wird der nächste Patch das ganze
if(X_on) {
restore_x = 1;
x_on = 0;
}
if(Z_on) {
...
}
activate_Y()
send_something_on_Y()
if(restore_x) {
x_init()
x_on = 1;
} ...
durch
cc_rf_mode_t oldmode = cc_rf_mode;
activate_Y()
send_something_on_Y()
ccSetRfMode(oldmode);
ersetzten.
Da das alle Funkmodule betrifft, würde ich gerne eure Meinung hören.