PWM Register Access Control

#include <iostream>

class UARTDriver {
private:
    int baud_rate;

public:
    // Single constructor with a default starting value
    UARTDriver() : baud_rate(9600) {}

    // Validating Setter: Only allows hardware-supported discrete rates
    void setBaudRate(int req) {
        if (req == 9600 || req == 19200 || req == 115200) {
            baud_rate = req;
        } else {
            // Keep the current rate and optionally log an error
            std::cerr << "Invalid Baud Rate: " << req << ". Hardware not supported." << std::endl;
        }
    }

    // Read-only getter
    int getBaudRate() const {
        return baud_rate;
    }
};

int main() {
    int N;
    if (!(std::cin >> N)) return 0;

    UARTDriver driver;

    for (int i = 0; i < N; ++i) {
        int req;
        std::cin >> req;

        // Use the validating API
        driver.setBaudRate(req);

        // Access via getter
        std::cout << "Active: " << driver.getBaudRate() << std::endl;
    }

    return 0;
}

Solving Approach

 

 

 

 

 

Upvote
Downvote
Loading...

Input

3 50 150 -20

Expected Output

CCR: 50 CCR: 100 CCR: 0