Se seus dados estiverem passando pelo XBees, você deverá colocar os módulos no modo API com caracteres de escape, dividir seus dados em pacotes lógicos e aproveitar o fato de que, no modo API, um pacote fornecido a um XBee chegará intacto ou de modo nenhum. Projete seu protocolo em torno da transmissão de pedaços de 1 a 255 bytes e deixe os módulos XBee se preocupar com a forma de entrega dos dados em cada pedaço. Não se preocupe em manter a integridade de pacotes individuais ou as subdivisões entre eles. Os módulos Digi farão um bom trabalho cuidando disso. A maior coisa com a qual você precisa se preocupar é o fato de que, mesmo que o nó que transmite um pacote acredite que não foi entregue e envie uma substituição, o destinatário pode acabar obtendo a mesma de qualquer maneira - possivelmente mesmo após a substituição. As coisas podem ser mais fáceis se você projetar seu protocolo para que um lado seja o "mestre"; se o mestre solicitar um dado, o escravo deve enviá-lo uma vez e não se preocupar se o mestre o obtém. Se o mestre não obtiver os dados que deseja, poderá solicitá-los novamente.
O escravo deve atribuir algum tipo de número de sequência aos dados, e o mestre deve atribuir números de sequência a solicitações que o escravo mude de estado. Se a solicitação do mestre for do formato "envie o primeiro item cujo número de sequência seja maior que XXX", e cada item de dados do escravo incluirá seu próprio número de sequência e o do item anterior (se não forem numerados consecutivamente ), pacotes de chegada tardia podem fazer com que o escravo envie dados de forma redundante ao mestre, mas o mestre não terá dificuldade em ignorar as conseqüentes respostas de chegada tardia. Se o escravo receber uma solicitação de mudança de estado cujo número de sequência estiver abaixo do pedido anterior, deverá ignorá-la, pois foi substituída antes mesmo de ser recebida.