ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
20 апреля
907036 Топик полностью
VLLV (26.02.2019 18:29, просмотров: 88) ответил SciFi на Это же надо суметь :-)
Дарю! :) FLAG ( eeprom_good ,flags, 0x0001U ) FLAG ( user_calibration ,flags, 0x0002U ) FLAG ( factory_flag ,flags, 0x0004U ) FLAG ( aborted ,flags, 0x0008U ) FLAG ( turnon_flag ,flags, 0x0010U ) FLAG ( master_flag ,flags, 0x0020U ) FLAG ( blink ,flags, 0x0040U ) FLAG ( done ,flags, 0x0080U ) FLAG ( remote_change_enabled ,flags, 0x0100U ) FLAG ( echo_disabled ,flags, 0x0200U ) FLAG ( main_loop ,flags, 0x0400U ) FLAG ( enable_water_stop ,flags, 0x0800U ) FLAG ( enable_pumpA_stop ,flags, 0x1000U ) FLAG ( enable_pumpB_stop ,flags, 0x2000U ) FLAG ( canA_error_indicated ,flags, 0x4000U ) FLAG ( canB_error_indicated ,flags, 0x8000U ) #pragma inline=forced uint GetFlag(uint name); #pragma inline=forced void OnFlag(uint name); #pragma inline=forced void OffFlag(uint name); #pragma inline=forced void ToggleFlag(uint name); /* enumeration of flags */ enum { #define FLAG( name, var, bit) name, #define FLAGS_VARIABLE(var) #include "h__flags.h" #undef FLAG #undef FLAGS_VARIABLE }; /* generation of flag bits masks */ #define FLAG( name, var, bit) enum { m_##name=(bit)}; #define FLAGS_VARIABLE(var) #include "h__flags.h" #undef FLAG #undef FLAGS_VARIABLE /* generation of extern var */ #define FLAG(name, port, bit) #define FLAGS_VARIABLE(var) extern volatile unsigned int var; #include "h__flags.h" #undef FLAG #undef FLAGS_VARIABLE // generation of GET functions unsigned int GetFlag( unsigned int name) { switch (name) { #define FLAG( name, var, bit) case name: return (var & bit); #define FLAGS_VARIABLE(var) #include "h__flags.h" #undef FLAG #undef FLAGS_VARIABLE default: return 0; } } // generation of ON flag void OnFlag( unsigned int name) { switch (name) { #define FLAG(name, var, bit) case name: var|=bit; return; #define FLAGS_VARIABLE(var) #include "h__flags.h" #undef FLAG #undef FLAGS_VARIABLE }} // generation of OFF flag #pragma diag_suppress=Pe068 void OffFlag( unsigned int name) { switch (name) { #define FLAG(name, var, bit) case name: var&=~bit; return; #define FLAGS_VARIABLE(var) #include "h__flags.h" #undef FLAG #undef FLAGS_VARIABLE }} #pragma diag_warning=Pe068 // generation of TOGGLE output functions void ToggleFlag( unsigned int name) { switch (name) { #define FLAG(name, var, bit) case name: var^=bit; return; #define FLAGS_VARIABLE(var) #include "h__flags.h" #undef FLAG #undef FLAGS_VARIABLE }}