kopia lustrzana https://github.com/rs1729/RS
dfm09: serial number fix (2)
rodzic
480069ce53
commit
a5518da6b3
|
@ -46,6 +46,7 @@ typedef struct {
|
|||
typedef struct {
|
||||
ui8_t max_ch;
|
||||
ui8_t nul_ch;
|
||||
ui8_t sn_ch;
|
||||
ui8_t chXbit;
|
||||
ui32_t SN_X;
|
||||
ui32_t chX[2];
|
||||
|
@ -456,33 +457,47 @@ static int conf_out(gpx_t *gpx, ui8_t *conf_bits, int ec) {
|
|||
if (bits2val(conf_bits+4, 4) == 0xC) { // 0xsCaaaab
|
||||
gpx->snc.max_ch = conf_id; // reset?
|
||||
}
|
||||
/*
|
||||
if (bits2val(conf_bits, 8) == 0x70) { // 0x70aaaab
|
||||
gpx->snc.max_ch = conf_id; // reset?
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
if (conf_id > 4 && (conf_id == (gpx->snc.nul_ch>>4)+1 || conf_id == gpx->snc.max_ch))
|
||||
// SN: mind. 6 Kanaele
|
||||
if (conf_id > 5 && (conf_id == (gpx->snc.nul_ch>>4)+1 || conf_id == gpx->snc.max_ch))
|
||||
{
|
||||
sn2_ch = bits2val(conf_bits, 8);
|
||||
sn_ch = ((sn2_ch>>4) & 0xF);
|
||||
if (conf_id == sn_ch)
|
||||
{
|
||||
if ( (gpx->snc.nul_ch & 0x58) == 0x58 ) { // 0x5A, 0x5B
|
||||
SN6 = bits2val(conf_bits+4, 4*6); // DFM-06: Kanal 6
|
||||
if (SN6 == gpx->SN6 && SN6 != 0) { // nur Nibble-Werte 0..9
|
||||
gpx->sonde_typ = SNbit | 6;
|
||||
gpx->ptu_out = 6;
|
||||
sprintf(gpx->sonde_id, "ID06:%6X", gpx->SN6);
|
||||
//sprintf(json_sonde_id, "DFM06-%6X", gpx->SN6);
|
||||
}
|
||||
else { // reset
|
||||
gpx->sonde_typ = 0;
|
||||
//sprintf(json_sonde_id, "DFMxx-xxxxxxxx"); //json_sonde_id[0] = '\0';
|
||||
}
|
||||
gpx->SN6 = SN6;
|
||||
sn_ch = ((sn2_ch>>4) & 0xF); // sn_ch == config_id
|
||||
|
||||
if ( (gpx->snc.nul_ch & 0x58) == 0x58 ) { // 0x5A, 0x5B
|
||||
SN6 = bits2val(conf_bits+4, 4*6); // DFM-06: Kanal 6
|
||||
if (SN6 == gpx->SN6 && SN6 != 0) { // nur Nibble-Werte 0..9
|
||||
gpx->sonde_typ = SNbit | 6;
|
||||
gpx->ptu_out = 6;
|
||||
sprintf(gpx->sonde_id, "ID06:%6X", gpx->SN6);
|
||||
//sprintf(json_sonde_id, "DFM06-%6X", gpx->SN6);
|
||||
}
|
||||
else if ( (sn2_ch & 0xF) == 0xC // 0xsCaaaab, s==sn_ch , s: 0xA=DFM-09 , 0xC=DFM-17? 0xD=?
|
||||
|| (sn2_ch & 0xF) == 0x0 ) // 0xs0aaaab, s==sn_ch , s: 0x7,0x8: pilotsonde PS-15?
|
||||
else { // reset
|
||||
gpx->sonde_typ = 0;
|
||||
//sprintf(json_sonde_id, "DFMxx-xxxxxxxx"); //json_sonde_id[0] = '\0';
|
||||
}
|
||||
gpx->SN6 = SN6;
|
||||
}
|
||||
else if ( (sn2_ch & 0xF) == 0xC // 0xsCaaaab, s==sn_ch , s: 0xA=DFM-09 , 0xC=DFM-17? 0xD=?
|
||||
|| (sn2_ch & 0xF) == 0x0 ) // 0xs0aaaab, s==sn_ch , s: 0x7,0x8: pilotsonde PS-15?
|
||||
{
|
||||
val = bits2val(conf_bits+8, 4*5);
|
||||
hl = (val & 0xF);
|
||||
if (hl < 2)
|
||||
{
|
||||
val = bits2val(conf_bits+8, 4*5);
|
||||
hl = (val & 1);
|
||||
if ( gpx->snc.sn_ch != sn_ch ) { // -> sn_ch > 0
|
||||
// reset
|
||||
gpx->snc.chXbit = 0;
|
||||
gpx->snc.chX[0] = 0;
|
||||
gpx->snc.chX[1] = 0;
|
||||
}
|
||||
gpx->snc.sn_ch = sn_ch;
|
||||
gpx->snc.chX[hl] = (val >> 4) & 0xFFFF;
|
||||
gpx->snc.chXbit |= 1 << hl;
|
||||
if (gpx->snc.chXbit == 3) {
|
||||
|
@ -514,8 +529,8 @@ static int conf_out(gpx_t *gpx, ui8_t *conf_bits, int ec) {
|
|||
gpx->snc.chXbit = 0;
|
||||
}
|
||||
}
|
||||
ret = (gpx->sonde_typ & 0xF);
|
||||
}
|
||||
ret = (gpx->sonde_typ & 0xF);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -45,6 +45,7 @@ typedef struct {
|
|||
typedef struct {
|
||||
ui8_t max_ch;
|
||||
ui8_t nul_ch;
|
||||
ui8_t sn_ch;
|
||||
ui8_t chXbit;
|
||||
ui32_t SN_X;
|
||||
ui32_t chX[2];
|
||||
|
@ -455,33 +456,47 @@ static int conf_out(gpx_t *gpx, ui8_t *conf_bits, int ec) {
|
|||
if (bits2val(conf_bits+4, 4) == 0xC) { // 0xsCaaaab
|
||||
gpx->snc.max_ch = conf_id; // reset?
|
||||
}
|
||||
/*
|
||||
if (bits2val(conf_bits, 8) == 0x70) { // 0x70aaaab
|
||||
gpx->snc.max_ch = conf_id; // reset?
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
if (conf_id > 4 && (conf_id == (gpx->snc.nul_ch>>4)+1 || conf_id == gpx->snc.max_ch))
|
||||
// SN: mind. 6 Kanaele
|
||||
if (conf_id > 5 && (conf_id == (gpx->snc.nul_ch>>4)+1 || conf_id == gpx->snc.max_ch))
|
||||
{
|
||||
sn2_ch = bits2val(conf_bits, 8);
|
||||
sn_ch = ((sn2_ch>>4) & 0xF);
|
||||
if (conf_id == sn_ch)
|
||||
{
|
||||
if ( (gpx->snc.nul_ch & 0x58) == 0x58 ) { // 0x5A, 0x5B
|
||||
SN6 = bits2val(conf_bits+4, 4*6); // DFM-06: Kanal 6
|
||||
if (SN6 == gpx->SN6 && SN6 != 0) { // nur Nibble-Werte 0..9
|
||||
gpx->sonde_typ = SNbit | 6;
|
||||
gpx->ptu_out = 6;
|
||||
sprintf(gpx->sonde_id, "ID06:%6X", gpx->SN6);
|
||||
//sprintf(json_sonde_id, "DFM06-%6X", gpx->SN6);
|
||||
}
|
||||
else { // reset
|
||||
gpx->sonde_typ = 0;
|
||||
//sprintf(json_sonde_id, "DFMxx-xxxxxxxx"); //json_sonde_id[0] = '\0';
|
||||
}
|
||||
gpx->SN6 = SN6;
|
||||
sn_ch = ((sn2_ch>>4) & 0xF); // sn_ch == config_id
|
||||
|
||||
if ( (gpx->snc.nul_ch & 0x58) == 0x58 ) { // 0x5A, 0x5B
|
||||
SN6 = bits2val(conf_bits+4, 4*6); // DFM-06: Kanal 6
|
||||
if (SN6 == gpx->SN6 && SN6 != 0) { // nur Nibble-Werte 0..9
|
||||
gpx->sonde_typ = SNbit | 6;
|
||||
gpx->ptu_out = 6;
|
||||
sprintf(gpx->sonde_id, "ID06:%6X", gpx->SN6);
|
||||
//sprintf(json_sonde_id, "DFM06-%6X", gpx->SN6);
|
||||
}
|
||||
else if ( (sn2_ch & 0xF) == 0xC // 0xsCaaaab, s==sn_ch , s: 0xA=DFM-09 , 0xC=DFM-17? 0xD=?
|
||||
|| (sn2_ch & 0xF) == 0x0 ) // 0xs0aaaab, s==sn_ch , s: 0x7,0x8: pilotsonde PS-15?
|
||||
else { // reset
|
||||
gpx->sonde_typ = 0;
|
||||
//sprintf(json_sonde_id, "DFMxx-xxxxxxxx"); //json_sonde_id[0] = '\0';
|
||||
}
|
||||
gpx->SN6 = SN6;
|
||||
}
|
||||
else if ( (sn2_ch & 0xF) == 0xC // 0xsCaaaab, s==sn_ch , s: 0xA=DFM-09 , 0xC=DFM-17? 0xD=?
|
||||
|| (sn2_ch & 0xF) == 0x0 ) // 0xs0aaaab, s==sn_ch , s: 0x7,0x8: pilotsonde PS-15?
|
||||
{
|
||||
val = bits2val(conf_bits+8, 4*5);
|
||||
hl = (val & 0xF);
|
||||
if (hl < 2)
|
||||
{
|
||||
val = bits2val(conf_bits+8, 4*5);
|
||||
hl = (val & 1);
|
||||
if ( gpx->snc.sn_ch != sn_ch ) { // -> sn_ch > 0
|
||||
// reset
|
||||
gpx->snc.chXbit = 0;
|
||||
gpx->snc.chX[0] = 0;
|
||||
gpx->snc.chX[1] = 0;
|
||||
}
|
||||
gpx->snc.sn_ch = sn_ch;
|
||||
gpx->snc.chX[hl] = (val >> 4) & 0xFFFF;
|
||||
gpx->snc.chXbit |= 1 << hl;
|
||||
if (gpx->snc.chXbit == 3) {
|
||||
|
@ -513,8 +528,8 @@ static int conf_out(gpx_t *gpx, ui8_t *conf_bits, int ec) {
|
|||
gpx->snc.chXbit = 0;
|
||||
}
|
||||
}
|
||||
ret = (gpx->sonde_typ & 0xF);
|
||||
}
|
||||
ret = (gpx->sonde_typ & 0xF);
|
||||
}
|
||||
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue