no he oído hablar de cualquier punto de vista general, aunque muchos lugares que he trabajado han tenido estándares de nomenclatura, etc.
Cada bit de la máscara se define de forma individual, por ejemplo:
#define TANK_GAUGE_OK (0x80) // 1 when the gauge is properly initialized and working
#define TANK_FULL (0x08) // 1 when tank is filled completely
#define TANK_HIGH (0x04) // 1 when tank is at least 1/4 full
#define TANK_LOW (0x02) // 1 when tank is at least 1/8 full
#define TANK_NOTEMPTY (0x01) // 1 when there is some fuel in tank
#define TANK_LIGHTS_MASK (TANK_FULL | TANK_HIGH | TANK_LOW | TANK_NOTEMPTY)
Para nombres de las funciones -
SET_ON(unsigned setMask), SET_OFF(unsigned clearMask)
para actualizar bits específicos en un registro:
Update(changeMask, valueMask)
donde ChangeMask contiene los bits que desea actualizar, a 1, y valueMask contiene los bits de los valores que se desea establecer.
Se podría usarlos como el código para un monitor indicador de combustible incrustada:
static unsigned short fuelGaugeRegisterValue = 0x0000;
extern unsigned short *fuelGaugeRegister;
. . .
void UpdateFuelGauge(unsigned changeMask, unsigned valueMask) {
// code to grab mutex goes here...
fuelGaugeRegisterValue &= (~changeMask);
fuelGaugeRegisterValue |= (changeMask & valueMask);
*fuelGaugeRegister = fuelGaugeRegisterValue;
// code to release mutex goes here...
}
. . .
void SetFuelGaugeFromLevel(unsigned byte currentLevel)
if (currentLevel == 0xFF) {
UpdateFuelGauge(TANK_LIGHTS_MASK, TANK_LIGHTS_MASK);
}
else if (level >= 0x03) {
UpdateFuelGauge(TANK_LIGHTS_MASK, (TANK_HIGH | TANK_LOW | TANK_NOTEMPTY));
}
else if (level >= 0x02) {
UpdateFuelGauge(TANK_LIGHTS_MASK, (TANK_LOW | TANK_NOTEMPTY));
}
else if (level > 0x01) {
UpdateFuelGauge(TANK_LIGHTS_MASK, TANK_NOTEMPTY);
}
else {
UpdateFuelGauge(TANK_LIGHTS_MASK, 0);
}
}
Algunas otras notas:
Trate de nombrar los bits y máscaras estándar de manera que se puede hacer una educada Adivina qué significaría el bit cuando se "afirme". Por ejemplo, "EMPTY_FLAG" te hace adivinar si "1" significa "vacío", "no está vacío".
Wikipedia has an article on signal masking que utiliza cierta terminología, pero actualmente menciona cualquier convención de nomenclatura.
¿qué tal máscara y valor? – TJD