Hallo,
habe gerade eine kleines Problem mit einer Switch Case Anweisung, welches mir nicht einleuchtet...
Folgende Struktur soll mit Werten gefüllt werden.
struct CURVE_DATA {
uint8_t Typ;
uint8_t NO_OF_CURVES;
uint8_t NO_OF_POINTS_PER_CURVE;
uint8_t CURVE_DATA[4][2];
uint8_t Len;
void load(uint8_t iTyp, uint8_t iNoCurves, uint8_t iNoPoints, uint8_t *iData) {
Typ = iTyp;
NO_OF_CURVES = iNoCurves;
NO_OF_POINTS_PER_CURVE = iNoPoints;
memcpy(CURVE_DATA, iData, sizeof iData);
}
}DataArray[15];
Dazu habe ich eine Funktion, die im Setup aufgerufen wird:
void setupMachineType()
{
uint8_t NO_OF_CURVES = 0;
uint8_t NO_OF_POINTS_PER_CURVE = 0;
DEBUG_PRINTLN_VALUE_HEX("MType als Hex", MType);
switch (MType) {
case 1: // v_twin_270_cam_hallsignal_begin_stroke2
DEBUG_PRINTLN_VALUE("Case", 1);
NO_OF_CURVES = 1;
NO_OF_POINTS_PER_CURVE = 9;
uint8_t typ1_DATA[ NO_OF_CURVES * NO_OF_POINTS_PER_CURVE ][ 2 ] = {
{14, 6 },
{20, 20 },
{25, 27 },
{30, 30 },
{38, 33 },
{55, 35 },
{76, 36 },
{83, 37 },
{90, 39 }
};
DataArray[MType].load(MType, NO_OF_CURVES, NO_OF_POINTS_PER_CURVE, *typ1_DATA);
break;
case 2: // v_twin_270_crank_hallsignal_mid_stroke1
DEBUG_PRINTLN_VALUE("Case", 2);
NO_OF_CURVES = 1;
NO_OF_POINTS_PER_CURVE = 9;
uint8_t typ2_DATA[ NO_OF_CURVES * NO_OF_POINTS_PER_CURVE ][ 2 ] = {
{14, 6 },
{20, 20 },
{25, 27 },
{30, 30 },
{38, 33 },
{55, 35 },
{76, 36 },
{83, 37 },
{90, 39 }
};
DataArray[MType].load(MType, NO_OF_CURVES, NO_OF_POINTS_PER_CURVE, *typ2_DATA);
break;
Es gibt noch weitere Fälle, aber das wiederholt sich mit immer anderen Werten.
Die Variable MType ist ein uint8_t
Ich hoffe, ihr seht, was mir entgeht..
VG
Matze