This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Two nets to stream to six clients? (design sanity check)

Other Parts Discussed in Thread: CC8530, CC8531, CC8521, CC8520

Hello everyone

I am currently working on a design for streaming audio to different rooms in a flat. If possible, I would like to avoid  implementing all of the audio clock synchronization, packet retransmission and error correction stuff. I believe that this  could be implemented with the CC85xx chips, but if possible I'd like to have somebody with experience with the PPW  ecosystem have a look at what I'm planning to do before I give it a go.

Requirements:

  1. Stream stereo audio to up to 6 consumers
  2. Two stereo audio streams are to be streamed. Any of the two streams shall be available to any of the 6 consumers. But it is not required that one consumer can receive both streams simultaneously.
  3. Dynamic allocation of which consumer plays which stream, if any, on the master side.

I checked the datasheet and the Family User Guide and I think this is possible as follows: Audio input board with two CC8530, both acting as master and governing the star networks A and B. Each of the 6 audio output boards are equipped with one CC8530. Three of those are programmed such that they join net A, and the remaining ones join net B.

If any of the two streams is active, they are fed into both of the masters. For each master, two channels are assigned to the first stream and the remaining two channels are assigned to the second stream. The data side channel is used to remotely control which consumer plays which channel ("routing"). On any change in routing, an appropriate command is sent by the masters, leading to a NWM_ACH_SET_USAGE sent from the microcontroller on the consumer board to  the slave CC8530.

Here are some questions on this design:

  1. Does this potentially work or did I overlook something?

  2. Is there an easier way to do the audio routing than using the data side channel? I believe NWM_ACH_SET_USAGE  is to be used on the slave board itself, but maybe there is another way.

  3. On getting the audio to the master board: Since I'm using two masters, resulting in two independent nets, it looks as if I would benefit from using timeslot alignment. I read somewhere that this does not work with USB masters. Hence my choice of the CC8530. Using the CC8531 on the master board (maybe together with an onboard USB hub) would be a much better fit for my application, but it appears as if I'd have to decide between timeslot alignment and USB master functionality. Is this correct?

  4. The design I described above is wasteful in the sense that the same audio stream is potentially sent twice, in the  case of two consumers being part of a different net but playing the same audio stream. As the number of slaves is limited to 4, the only way around this would be to have the clients dynamically leave one net and join another. This strategy would allow me to have up to four clients listening to one stream, in fact I could restrict the requirements accordingly without too much trouble and I could also use the CC8520 (CC8521?) instead, as the participation to a net would equate to the ability to listen to the audio stream specific to that net. Hence the question whether dynamically moving a client from one net to another is feasible. Something like locking out / ejecting a client from a net and having it reconnect to the other one.

  5. Generally, if there is an easier way to meet the requirements or the restricted requirements as of question 4, that would be of interest to me.

  6. Table 1 of the PPW Family User Guide shows that one of these chips can support up to 2 (CC852x) or 4 (CC853x),  respectively, channels. Then throughout the document, it is stated that any net can consist of up to four slaves. Table 9 however lists 10 output channels, and 6 more input channels. It appears to me as this is somewhat overkill, as I cannot think of any application that would exhaust this number. A master can employ up to four of these channels, and for any slave it would only make sense to subscribe to any of those four that are actually produced by the master. Of course you could have a second net (see above), but what's the point in not re-using the logical channels? Am I missing something here?

Best regards and thank you

Matt

  • Hi Matt, 

    First of all, compliments from me on your extensive pre-study of the documentation. You already have a pretty good overview on how things works.

    1. Yes - this is how things needs to be done. 
    2. No, not as long as the master is the one that should control this. There are other means of getting info from slave to masters but not the other way around. 
    3. Timeslot alignment is needed to keep the two networks in sync, audio clock wise, and to ensure they are not stepping on each other toes RF wise. Keeping them separated in frequency could be wise as well. Also, data side channel is not available on the CC85x1 variants, so this scheme do need to use CC8530s
    4. Actually have to think a little on this one. It will work, but you will have to use the data side channel to notify the slaves to leave one NWK and join the other as I do not think there is a way for a master to eject a slave. 
    5. I'll have to do some digging on this one. There was another solution way back in the early days, but as the project evolved, things changed and not everything is possible anymore. I'll get in touch if there is another way,
    6. This is just a logical mapping and there where reasond why these where included. In your case nothing to bother about. 

    Regards, 
    Kjetil