HWA
Bare metal programming with style
tcs3200.h
Go to the documentation of this file.
1 #ifndef _HWA_TCS3200_H_
2 #define _HWA_TCS3200_H_
3 
4 /* This file is part of the HWA project.
5  * Copyright (c) 2012,2015 Christophe Duparquet.
6  * All rights reserved. Read LICENSE.TXT for details.
7  */
8 
72 #define hw_class__tcs3200
73 
74 #define hw_configure__tcs3200 , _hw_cft3k2
75 #define hwa_configure__tcs3200 , _hwa_cft3k2
76 
77 
78 #define _hw_t3k2_fq_0 , 0, 0 /* S1, S0 */
79 #define _hw_t3k2_fq_12kHz , 1, 0 /* S1, S0 */
80 #define _hw_t3k2_fq_120kHz , 0, 1 /* S1, S0 */
81 #define _hw_t3k2_fq_600kHz , 1, 1 /* S1, S0 */
82 
83 #define _hw_t3k2_fl_red , 0, 0 /* S3, S2 */
84 #define _hw_t3k2_fl_clear , 0, 1 /* S3, S2 */
85 #define _hw_t3k2_fl_blue , 1, 0 /* S3, S2 */
86 #define _hw_t3k2_fl_green , 1, 1 /* S3, S2 */
87 
88 #define _hw_cft3k2(...) do { _hwx_cft3k2(_hw,__VA_ARGS__) }while(0)
89 #define _hwa_cft3k2(...) do { _hwx_cft3k2(_hwa,__VA_ARGS__) }while(0)
90 
91 /* Optionnal keyword 'frequency'
92  */
93 #define _hwx_cft3k2(h,o,a,k,...) HW_B(_hwx_cft3k2_kfq_,_hw_is_frequency_##k)(h,o,k,__VA_ARGS__)
94 #define _hwx_cft3k2_kfq_1(h,o,k,v,...) HW_B(_hwx_cft3k2_vfq_,_hw_t3k2_fq_##v)(h,o,v,__VA_ARGS__)
95 #define _hwx_cft3k2_vfq_0(h,o,v,...) HW_E(HW_EM_VOAL(v,frequency,(0,12kHz,120kHz,600kHz))
96 #define _hwx_cft3k2_vfq_1(h,o,v,k,...) \
97  h(write,hw_##o##_s1, HW_A1(_hw_t3k2_fq_##v)); \
98  h(write,hw_##o##_s0, HW_A2(_hw_t3k2_fq_##v)); \
99  HW_B(_hwx_cft3k2_kfl_,_hw_is_filter_##k)(h,o,k,__VA_ARGS__)
100 
101 /* Optionnal keyword 'filter'
102  */
103 #define _hwx_cft3k2_kfq_0(h,o,k,...) HW_B(_hwx_cft3k2_kfl_,_hw_is_filter_##k)(h,o,k,__VA_ARGS__)
104 #define _hwx_cft3k2_kfl_1(h,o,k,v,...) HW_B(_hwx_cft3k2_vfl_,_hw_t3k2_fl_##v)(h,o,v,__VA_ARGS__)
105 #define _hwx_cft3k2_vfl_0(h,o,v,...) HW_E(HW_EM_VOAL(v,filter,(10_12kHz,100_120kHz,500_600kHz))
106 #define _hwx_cft3k2_vfl_1(h,o,v,k,...) \
107  h(write,hw_##o##_s3, HW_A1(_hw_t3k2_fl_##v)); \
108  h(write,hw_##o##_s2, HW_A2(_hw_t3k2_fl_##v)); \
109  HW_B(_hwx_cft3k2_kou_,_hw_is_output_##k)(h,o,k,__VA_ARGS__)
110 
111 /* Optionnal keyword 'output'
112  */
113 #define _hwx_cft3k2_kfl_0(h,o,k,...) HW_B(_hwx_cft3k2_kou_,_hw_is_output_##k)(h,o,k,__VA_ARGS__)
114 #define _hwx_cft3k2_kou_1(h,o,k,v,...) HW_B(_hwx_cft3k2_vou_,_hw_state_##v)(h,o,v,__VA_ARGS__)
115 #define _hwx_cft3k2_vou_0(h,o,v,...) HW_E(HW_EM_ST(v))
116 #define _hwx_cft3k2_vou_1(h,o,v,...) \
117  h(write,hw_##o##_oe, HW_A1(_hw_state_##v)); \
118  HW_EOL(__VA_ARGS__)
119 #define _hwx_cft3k2_kou_0(h,o,...) HW_EOL(__VA_ARGS__)
120 
121 #endif