diff options
Diffstat (limited to 'firmware/octoclock/octoclock_r4/octoclock_r4_main.c')
| -rw-r--r-- | firmware/octoclock/octoclock_r4/octoclock_r4_main.c | 71 | 
1 files changed, 9 insertions, 62 deletions
| diff --git a/firmware/octoclock/octoclock_r4/octoclock_r4_main.c b/firmware/octoclock/octoclock_r4/octoclock_r4_main.c index f80c7d188..5e8e6d09b 100644 --- a/firmware/octoclock/octoclock_r4/octoclock_r4_main.c +++ b/firmware/octoclock/octoclock_r4/octoclock_r4_main.c @@ -72,23 +72,21 @@  int main(void){ -    #ifdef DEBUG      asm("cli"); -    #else -    asm("sei"); -    #endif - -    bool old_global_ext_ref_is_present = false; -    switch_pos_t old_switch_pos, current_switch_pos;      setup_atmel_io_ports(); -      network_init(); + +    #ifndef DEBUG +    asm("sei"); +    #endif +      init_udp_listeners();      register_udp_listener(OCTOCLOCK_UDP_CTRL_PORT, handle_udp_ctrl_packet);      register_udp_listener(OCTOCLOCK_UDP_GPSDO_PORT, handle_udp_gpsdo_packet);      DEBUG_INIT(); // Does nothing when not in debug mode +    DEBUG_LOG(" "); //Force a newline between runs      usart_init();      //Set initial ClkDist and front panel settings @@ -98,61 +96,10 @@ int main(void){      led(Top,true);      PORTA |= (1<<PA6);    // PPS from Internal source -    /* -     * DO THIS FOREVER: -     * -     * get_switch_state -     * -     * if SWITCH_CHANGED: -     * -     *   if PREFER_INTERNAL: -     *     if INTERNAL_PRESENT do_internal -     *     else if EXTERNAL_PRESENT do_external -     *     else LEDs OFF -     * -     *   if PREFER_EXTERNAL: -     *     if EXTERNAL_PRESENT do_external -     *     else if INTERNAL_PRESENT do_internal -     *     else LEDs OFF -     * -     * check Ethernet port for incoming packets -     * -     *   if packets seen: -     *     pass to appropriate handler -     * -     * check if told to monitor GPSDO output -     * -     *   if send flag is set: -     *     check if interrupt routine has filled buffer with full sentence -     *     if so, send to host (last machine to use this port) -     */ - -    check_what_is_present(); -    old_global_ext_ref_is_present = !global_ext_ref_is_present; -    old_switch_pos = (get_switch_pos() == UP) ? DOWN : UP; +    TIMER0_INIT(); +    TIMER1_INIT(); -    // Because down below, we use this to get state swap So we arbitrarily set -    // the PREVIOUS state to be the "other" state so that, below, we trigger -    // what happens when the switch changes This first "change" is therefore -    // artificial to keep the logic, below, cleaner      while(true) { -        // Set "global_ext_ref_is_present" and "global_gps_present" -        check_what_is_present(); - -        current_switch_pos = get_switch_pos(); - -        if( (current_switch_pos != old_switch_pos)  ||  -            (global_ext_ref_is_present != old_global_ext_ref_is_present) ) { - -            old_switch_pos = current_switch_pos; -            old_global_ext_ref_is_present = global_ext_ref_is_present; - -            if(current_switch_pos == UP) prefer_internal(); -            else prefer_external(); -        } - -        //With OctoClock state verified, pass raw packet to handlers for processing -        size_t recv_len = enc28j60PacketReceive(512, buf_in); -        if(recv_len > 0) handle_eth_packet(recv_len); +        network_check();      }  } | 
