<!clock: {"ALL" : "TMR3"};
  pin:   {"TIMER3OutputPinRadio":{
                "TIMER_TOUT_PIN_FROM_TMX":     "TM3",
                "TIMER_TOUT_PIN_FROM_TMX_EXT": "TM3_EXT"},
		  "TIMER3EventCountCheckbox":{
                "1": "TM3"},
		  "TIMER3CaptureSourceSelect":{
                "TIMER_CAPTURE_FROM_EXTERNAL": "TM3_EXT"},
                 "ALL": [""]};
!>
/*--------------------------------------------------------------------------*/
/* TIMER3 Configuration                                                     */
/*--------------------------------------------------------------------------*/

#define TIMER3_MODE                     (<!id:TIMER3ModeRadio;
                                        type:radio;
                                        label:Select TIMER3 operation mode;
                                        data:TIMER_ONESHOT_MODE;
                                        default:TIMER_ONESHOT_MODE;
                                        enum:[TIMER_ONESHOT_MODE, TIMER_PERIODIC_MODE, TIMER_TOGGLE_MODE, TIMER_CONTINUOUS_MODE];
                                        optionLabels:[One-shot, Periodic, Toggle, Continuous counting];
                                        dependencies:none;
                                        dependenciesOption:none;
                                        groupId:Group_CommonConfig;
                                        groupName:Timer Common Configuration;!>)

#define NUCODEGEN_TIMER3_TOUT_PIN       (<!id:TIMER3OutputPinRadio;
                                        type:radio;
                                        label:Select TIMER3 output pin;
                                        data:TIMER_TOUT_PIN_FROM_TMX;
                                        default:TIMER_TOUT_PIN_FROM_TMX;
                                        enum:[TIMER_TOUT_PIN_FROM_TMX, TIMER_TOUT_PIN_FROM_TMX_EXT];
                                        optionLabels:[Output pin from TM3, Output pin from TM3_EXT];
                                        dependencies:TIMER3ModeRadio;
                                        dependenciesOption:TIMER_TOGGLE_MODE;
                                        groupId:Group_CommonConfig;!>)

#define TIMER3_FREQ                     (<!id:TIMER3FreqInteger;
                                        type:integer;
                                        label:Set TIMER3 frequency;
                                        data:1000000;
                                        default:1000000;
                                        helper:Enter your TIMER3 frequency, 1~ClkSrcFreq/2(Hz);
                                        minimum:1;
                                        maximum:24000000;
                                        dependencies:none;
                                        dependenciesOption:none;
                                        groupId:Group_CommonConfig;!>)


/* Configure Prescale and Compared Value */
#define NUCODEGEN_TIMER3_VALUE          (<!id:TIMER3SetValueCheckbox;
                                        type:checkbox;
                                        label:Set TIMER3 prescale & compared value;
                                        data:0;
                                        default:0;
                                        helper:Will change TIMER3 frequency;
                                        enum:[1];
                                        optionLabels:[<br>];
                                        dependencies:none;
                                        dependenciesOption:none;
                                        groupId:Group_CommonConfig;!>)
#if NUCODEGEN_TIMER3_VALUE
#define TIMER3_PRESCALE_VALUE           (<!id:TIMER3PrescaleInteger;
                                        type:integer;
                                        label:TIMER3 prescale value;
                                        data:5;
                                        default:5;
                                        helper:Enter your TIMER3 prescale value(dec);
                                        minimum:0;
                                        maximum:255;
                                        dependencies:TIMER3SetValueCheckbox;
                                        dependenciesOption:1;
                                        groupId:Group_CommonConfig;!>)
                                    
#define TIMER3_CMP_VALUE                (<!id:TIMER3CMPHexText;
                                        type:hextext;
                                        label:TIMER3 compared value;
                                        data:0xFFFFFF;
                                        default:0xFFFFFF;
                                        helper:Enter your TIMER3 compared value(hex);
                                        minimum:0x2;
                                        maximum:0xFFFFFF;
                                        dependencies:TIMER3SetValueCheckbox;
                                        dependenciesOption:1;
                                        groupId:Group_CommonConfig;!>)
#endif //NUCODEGEN_TIMER3_VALUE

#define NUCODEGEN_TIMER3_WAKEUP         (<!id:TIMER3WakeUpCheckbox;
                                        type:checkbox;
                                        label:Enable TIMER3 wake-up;
                                        data:0;
                                        default:0;
                                        enum:[1];
                                        optionLabels:[<br>];
                                        dependencies:none;
                                        dependenciesOption:none;
                                        groupId:Group_CommonConfig;!>)

#define NUCODEGEN_TIMER3_INT            (<!id:TIMER3IntCheckbox;
                                        type:checkbox;
                                        label:Enable TIMER3 time-out interrupt;
                                        data:0;
                                        default:0;
                                        enum:[1];
                                        optionLabels:[<br>];
                                        dependencies:none;
                                        dependenciesOption:none;
                                        groupId:Group_CommonConfig;!>)


/* Configure Event Count Function */
#define NUCODEGEN_TIMER3_EVENT_CNT      (<!id:TIMER3EventCountCheckbox;
                                        type:checkbox;
                                        label:Enable TIMER3 event counting;
                                        data:0;
                                        default:0;
                                        enum:[1];
                                        optionLabels:[<br>];
                                        dependencies:TIMER3ModeRadio;
                                        dependenciesOption:TIMER_ONESHOT_MODE|TIMER_PERIODIC_MODE|TIMER_CONTINUOUS_MODE;
                                        groupId:Group_EventCountConfig;
                                        groupName:Timer Event Count Configuration;
                                        filterExp:PA_dot6==1 or PB_dot2==1 or PD_dot15==1 or PF_dot14==1;!>)
#if NUCODEGEN_TIMER3_EVENT_CNT
#define NUCODEGEN_TIMER3_COUNTER_PHASE  (<!id:TIMER3PhaseRadio;
                                        type:radio;
                                        label:Select TIMER3 external count phase;
                                        data:TIMER_COUNTER_EVENT_FALLING;
                                        default:TIMER_COUNTER_EVENT_FALLING;
                                        enum:[TIMER_COUNTER_EVENT_FALLING, TIMER_COUNTER_EVENT_RISING];
                                        optionLabels:[Event falling edge, Event rising edge];
                                        dependencies:TIMER3EventCountCheckbox;
                                        dependenciesOption:1;
                                        groupId:Group_EventCountConfig;
                                        filterExp:PA_dot6==1 or PB_dot2==1 or PD_dot15==1 or PF_dot14==1;!>)

#define NUCODEGEN_TIMER3_EVENT_CNTDB    (<!id:TIMER3EventCountDebounceCheckbox;
                                        type:checkbox;
                                        label:Enable TIMER3 event counting de-bounce;
                                        data:0;
                                        default:0;
                                        enum:[1];
                                        optionLabels:[<br>];
                                        dependencies:TIMER3EventCountCheckbox;
                                        dependenciesOption:1;
                                        groupId:Group_EventCountConfig;
                                        filterExp:PA_dot6==1 or PB_dot2==1 or PD_dot15==1 or PF_dot14==1;!>)
#endif // NUCODEGEN_TIMER3_EVENT_CNT


/* Configure Capture Function */
#define NUCODEGEN_TIMER3_CAP            (<!id:TIMER3CaptureCheckbox;
                                        type:checkbox;
                                        label:Enable TIMER3 capture;
                                        data:0;
                                        default:0;
                                        enum:[1];
                                        optionLabels:[<br>];
                                        dependencies:TIMER3ModeRadio;
                                        dependenciesOption:TIMER_ONESHOT_MODE|TIMER_PERIODIC_MODE|TIMER_CONTINUOUS_MODE;
                                        groupId:Group_CaptureConfig;
                                        groupName:Timer Capture Configuration;!>)
#if NUCODEGEN_TIMER3_CAP
#define NUCODEGEN_TIMER3_CAP_SRC        (<!id:TIMER3CaptureSourceSelect;
                                        type:select;
                                        label:Select TIMER3 capture trigger source;
                                        data:TIMER_CAPTURE_FROM_EXTERNAL;
                                        default:TIMER_CAPTURE_FROM_EXTERNAL;
                                        enum:[TIMER_CAPTURE_FROM_EXTERNAL, TIMER_CAPTURE_FROM_LIRC];
                                        optionLabels:[Capture source from TM3_EXT pin, Capture source from LIRC];
                                        dependencies:TIMER3CaptureCheckbox;
                                        dependenciesOption:1;
                                        groupId:Group_CaptureConfig;!>)

#define NUCODEGEN_TIMER3_CAP_EDGE       (<!id:TIMER3CaptureEdgeSelect;
                                        type:select;
                                        label:Select TIMER3 capture edge detect;
                                        data:TIMER_CAPTURE_EVENT_FALLING;
                                        default:TIMER_CAPTURE_EVENT_FALLING;
                                        enum:[TIMER_CAPTURE_EVENT_FALLING, TIMER_CAPTURE_EVENT_RISING, TIMER_CAPTURE_EVENT_FALLING_RISING];
                                        optionLabels:[Capture on falling edge, Capture on rising edge, Capture on falling or rising edges];
                                        dependencies:TIMER3CaptureCheckbox;
                                        dependenciesOption:1;
                                        groupId:Group_CaptureConfig;!>)

#define NUCODEGEN_TIMER3_CAP_MODE       (<!id:TIMER3CaptureModeRadio;
                                        type:radio;
                                        label:Select TIMER3 capture mode;
                                        data:TIMER_CAPTURE_FREE_COUNTING_MODE;
                                        default:TIMER_CAPTURE_FREE_COUNTING_MODE;
                                        enum:[TIMER_CAPTURE_FREE_COUNTING_MODE, TIMER_CAPTURE_COUNTER_RESET_MODE];
                                        optionLabels:[Free counting, Capture and reset counter];
                                        dependencies:TIMER3CaptureCheckbox;
                                        dependenciesOption:1;
                                        groupId:Group_CaptureConfig;!>)

#define NUCODEGEN_TIMER3_CAPDB	        (<!id:TIMER3CaptureDebounceCheckbox;
                                        type:checkbox;
                                        label:Enable TIMER3 capture de-bounce;
                                        data:0;
                                        default:0;
                                        enum:[1];
                                        optionLabels:[<br>];
                                        dependencies:TIMER3CaptureCheckbox;
                                        dependenciesOption:1;
                                        groupId:Group_CaptureConfig;!>)

#define NUCODEGEN_TIMER3_CAP_INT        (<!id:TIMER3CaptureIntCheckbox;
                                        type:checkbox;
                                        label:Enable TIMER3 capture interrupt;
                                        data:0;
                                        default:0;
                                        enum:[1];
                                        optionLabels:[<br>];
                                        dependencies:TIMER3CaptureCheckbox;
                                        dependenciesOption:1;
                                        groupId:Group_CaptureConfig;!>)
#endif // NUCODEGEN_TIMER3_CAP


/* Configure Trigger Function */
#define NUCODEGEN_TIMER3_TRG            (<!id:TIMER3TriggerCheckbox;
                                        type:checkbox;
                                        label:Enable TIMER3 trigger;
                                        data:0;
                                        default:0;
                                        enum:[1];
                                        optionLabels:[<br>];
                                        dependencies:none;
                                        dependenciesOption:none;
                                        groupId:Group_TriggerConfig;
                                        groupName:Timer Trigger Configuration;!>)
#if NUCODEGEN_TIMER3_TRG
#define NUCODEGEN_TIMER3_TRG_SRC        (<!id:TIMER3TriggerConditionRadio;
                                        type:radio;
                                        label:TIMER3 trigger condition select;
                                        data:TIMER_TRGSEL_TIMEOUT_EVENT;
                                        default:TIMER_TRGSEL_TIMEOUT_EVENT;
                                        enum:[TIMER_TRGSEL_TIMEOUT_EVENT, TIMER_TRGSEL_CAPTURE_EVENT];
                                        optionLabels:[Time-out event, Capture event];
                                        dependencies:TIMER3TriggerCheckbox;
                                        dependenciesOption:1;
                                        groupId:Group_TriggerConfig;!>)

#define NUCODEGEN_TIMER3_TRG_TARGET     (<!id:TIMER3TriggerTargetCheckbox;
                                        type:checkbox;
                                        label:Select TIMER3 trigger target;
                                        data:0;
                                        default:0;
                                        sort:false;
                                        enum:[TIMER_TRG_TO_PDMA, TIMER_TRG_TO_ADC, TIMER_TRG_TO_BPWM01, TIMER_TRG_TO_BPWM23];
                                        optionLabels:[TIMER3 trigger PDMA, TIMER3 trigger ADC, TIMER3 trigger BPWM01, TIMER3 trigger BPWM23;
                                        dependencies:TIMER3TriggerCheckbox;
                                        dependenciesOption:1;
                                        groupId:Group_TriggerConfig;!>)
#endif // NUCODEGEN_TIMER3_TRG
