Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

ex N0: упаковка нескольких данных в 1 лонг

Отправлено ы 20 февраля 2009 г. 19:33
В ответ на: Маска чего? Если битов на регистрах, то (1 << BITNAME). (+) отправлено пользователем ReAl 20 февраля 2009 г. 19:16



#define GSMAUD_RING_COUNT_MASK BIN32(00000000,00000000,00000000,00000111) /* ring count : max 8 */
#define GSMAUD_VOLUME_MASK BIN32(00000000,00000000,00000000,00111000) /* melody volume : max 8 */
#define GSMAUD_MELODY_MASK BIN32(00000000,00000000,00000011,11000000) /* melody ndx : max 16 */
#define GSMAUD_MIC_MASK BIN32(00000000,00000000,00011100,00000000) /* MIC sens */
#define GSMAUD_SPKVOL_MASK BIN32(00000000,00000000,11100000,00000000) /* Speaker volume */
#define GSMAUD_SIDETON_MASK BIN32(00000000,00000111,00000000,00000000) /* sidetone gain : 0 - dis */
#define GSMAUD_ECHO_MODE_MASK BIN32(00000000,00011000,00000000,00000000) /* echo algoritm : 0 - dis */

#define gsm_audio_get(msk) GET_MASK_VAL(gPROFILE.Gsm_Audio,msk)
#define gsm_audio_set(msk,v) SET_MASK_VAL(gPROFILE.Gsm_Audio,msk,v)

#define GET_MASK_VAL(v,msk) (((v) & (msk)) >> MASK32_IN_SHIFT(msk))
#define SET_MASK_VAL(v,msk,n) ((v) = ((v) & ~(msk)) | (((u32_t)(n) << MASK32_IN_SHIFT(msk)) & (msk)))

#define MASK32_IN_SHIFT(in) \
(((in) & 0x00000001 ? 0ul:\
((in) & 0x00000002 ? 1ul:\
((in) & 0x00000004 ? 2ul:\
((in) & 0x00000008 ? 3ul:\
((in) & 0x00000010 ? 4ul:\
((in) & 0x00000020 ? 5ul:\
((in) & 0x00000040 ? 6ul:\
((in) & 0x00000080 ? 7ul:\
((in) & 0x00000100 ? 8ul:\
((in) & 0x00000200 ? 9ul:\
((in) & 0x00000400 ? 10ul:\
((in) & 0x00000800 ? 11ul:\
((in) & 0x00001000 ? 12ul:\
((in) & 0x00002000 ? 13ul:\
((in) & 0x00004000 ? 14ul:\
((in) & 0x00008000 ? 15ul:\
((in) & 0x00010000 ? 16ul:\
((in) & 0x00020000 ? 17ul:\
((in) & 0x00040000 ? 18ul:\
((in) & 0x00080000 ? 19ul:\
((in) & 0x00100000 ? 20ul:\
((in) & 0x00200000 ? 21ul:\
((in) & 0x00400000 ? 22ul:\
((in) & 0x00800000 ? 23ul:\
((in) & 0x01000000 ? 24ul:\
((in) & 0x02000000 ? 25ul:\
((in) & 0x04000000 ? 26ul:\
((in) & 0x08000000 ? 27ul:\
((in) & 0x10000000 ? 28ul:\
((in) & 0x20000000 ? 29ul:\
((in) & 0x40000000 ? 30ul:\
((in) & 0x80000000 ? 31ul:0)))))))))))))))))))))))))))))))))



u8_t HwPrf_RingCount (void) { return gsm_audio_get(GSMAUD_RING_COUNT_MASK );}
u8_t HwPrf_Volume (void) { return gsm_audio_get(GSMAUD_VOLUME_MASK );}
u8_t HwPrf_Melody (void) { return gsm_audio_get(GSMAUD_MELODY_MASK );}
u8_t HwPrf_MicSense (void) { return gsm_audio_get(GSMAUD_MIC_MASK );}
u8_t HwPrf_SpeakerVol (void) { return gsm_audio_get(GSMAUD_SPKVOL_MASK );}
u8_t HwPrf_EchoMode (void) { return gsm_audio_get(GSMAUD_ECHO_MODE_MASK );}
u8_t HwPrf_SideTone (void) { return gsm_audio_get(GSMAUD_SIDETON_MASK );}
u8_t HwPrf_SideToneEnb (void) { return (HwPrf_SideTone() ? 1 : 0 );}



Составить ответ | Вернуться на конференцию.

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 567:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru