This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

power_manage doesn't work in this case

Hello,

I don't understand why the power_manage(); doesn't work when I don't simulate the speed & cadence??

//#define SIMULATED
void csc_sim_measurement(ble_cscs_meas_t * p_measurement, uint8_t boolSpeedZero){
    
    static uint16_t cumulative_crank_revs = 0;
    static uint16_t event_time            = 0;
    static uint16_t wheel_revolution_mm   = 0;
    static uint16_t crank_rev_degrees     = 0;

    uint16_t mm_per_sec;
    uint16_t degrees_per_sec;
    uint16_t event_time_inc;
        
    event_time_inc = (1024 * SPEED_AND_CADENCE_MEAS_INTERVAL) / 1000;                                    // Per specification event time is in 1/1024th's of a second.
    p_measurement->is_wheel_rev_data_present = true;                                                                    // Calculate simulated wheel revolution values.

    //--------------------------------------------------------------------------------------------------
    // Calculate simulated speed values ----------------------------------------------------------------      
        #ifdef SIMULATED        
        mm_per_sec = KPH_TO_MM_PER_SEC * sensorsim_measure(&m_speed_kph_sim_state,&m_speed_kph_sim_cfg);        
        #endif
        #ifndef SIMULATED
        if(boolSpeedZero){        
            mm_per_sec                                 = 0;            
        }else{
            mm_per_sec                                 = (speed_wheel__*100) / 36;
        }
        #endif    
        wheel_revolution_mm     += mm_per_sec * SPEED_AND_CADENCE_MEAS_INTERVAL / 1000;
        m_cumulative_wheel_revs += wheel_revolution_mm / WHEEL_CIRCUMFERENCE_MM;
        wheel_revolution_mm     %= WHEEL_CIRCUMFERENCE_MM;
        
    p_measurement->cumulative_wheel_revs = m_cumulative_wheel_revs;
    p_measurement->last_wheel_event_time = event_time + (event_time_inc * (mm_per_sec - wheel_revolution_mm) / mm_per_sec);

    // Calculate simulated cadence values.
    p_measurement->is_crank_rev_data_present = true;
        
        #ifdef SIMULATED        
        degrees_per_sec = RPM_TO_DEGREES_PER_SEC * sensorsim_measure(&m_crank_rpm_sim_state,&m_crank_rpm_sim_cfg);
        #endif
        #ifndef SIMULATED    
        if(boolSpeedZero){    
            degrees_per_sec                 = 0;            
        }else{            
            kdnce_current__                 = kdnce_current__ - 200;
            degrees_per_sec                 = (uint16_t)(360.f * ( 1024.f/(float)kdnce_current__ ));        
        }
        #endif

        crank_rev_degrees     += degrees_per_sec * SPEED_AND_CADENCE_MEAS_INTERVAL / 1000;
        cumulative_crank_revs += crank_rev_degrees / DEGREES_PER_REVOLUTION;
        crank_rev_degrees     %= DEGREES_PER_REVOLUTION;        
        
    p_measurement->cumulative_crank_revs = cumulative_crank_revs;
    p_measurement->last_crank_event_time = event_time + (event_time_inc * (degrees_per_sec - crank_rev_degrees) / degrees_per_sec);

    event_time += event_time_inc;
}

Parents Reply Children
No Data
Related