adelyte / crescendo-for-crestron

Crescendo Framework for Crestron control systems.
https://www.adelyte.com/crestron/crescendo
Other
77 stars 26 forks source link

Maximum Number of Rooms? #103

Open bp529 opened 3 years ago

bp529 commented 3 years ago

What are the maximum number of rooms supported by Crescendo?

adelyte-chris commented 3 years ago

You would probably encounter hardware scaling issues before reaching the maximum number of rooms by the ID space, which is 99 using decimal notation and 255 using hexadecimal notation. Does that answer your question?

You can find full documentation on our website.

bp529 commented 3 years ago

@adelyte-chris Perfect. Exactly the information I needed. We're probably going to push the limits on this project (will be running on 4 Series). Does the 255 Hexadecimal notation apply to devices as well? Switchers, Keypads, etc?

adelyte-chris commented 3 years ago

All model IDs can be decimal or hexadecimal. See our crosspoint routing documentation to ensure you do not have collisions between models. You can extend the model types using "C", "D", "E", and "F" if needed.

The Rooms-Sources Controller (see snippet below including FIXME annotations) and Devices Controller are currently hardcoded for decimal IDs and will require modification if you are using them.

// snip to line 18 ...

#DEFINE_CONSTANT #ROOMS_MAX   99 // FIXME: change to `0xFF`
#DEFINE_CONSTANT #SOURCES_MAX 99 // FIXME: change to `0xFF`

// snip to line 80 ...

INTEGER_FUNCTION IdToIndex(INTEGER id)
{
    INTEGER index;

    id = LOW(id); // FIXME: `id` is now identical to `index`, no need to offset
    index = ATOI(ITOHEX(id));

    RETURN(index);
}

INTEGER_FUNCTION IndexToId(INTEGER index)
{
    INTEGER id;

    id = HEXTOI(ITOA(index)); // FIXME: `index` is now identical to `id`, no need to offset

    RETURN(id);
}

There might be other loose ends, but nothing comes to mind.

Crosspoint routing is not supposed to be affected by the number of crosspoint symbols, but you should assume overall scaling complexity of O(n) to be safe. Even with linear scaling, I'm skeptical that a single 4 Series can handle the device driver load concomitant with such a large number of rooms. However, if the device drivers are lightweight, it could work.

We do offer paid consulting and support on Crescendo and are happy to modify the framework to meet your specific needs. We have experience with deploying the framework across multiple processors—both as independent peers and using computer servers to bridge them together. Keep us in mind.

Please reply if you have any other concerns.

bp529 commented 3 years ago

@adelyte-chris Thank you very much for the detailed reply! This is very helpful.