Advertisement
MirandaWopps

CeuT Project Base Code

Nov 13th, 2024 (edited)
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.81 KB | Source Code | 0 0
  1. #include “/home/terra/TerraNG/terra/TerraNet.defs”
  2. // inclui parte especifica
  3.  
  4. var ushort nodeId = getNodeId(); // precisamos saber
  5. var ushort pai;
  6. pktype usrMsg from radioMsg with // struct em CeuT
  7.     var ubyte[4] d8;
  8.     var ushort[4] d16;// esses sao alguns dos pacotes
  9.     var ulong[2] d32; // para transferencia de dados
  10. end
  11. // necessarios objetos diferentes para nao haver sobrescrita
  12. var usrMsg sndData;//dados com memoria
  13. var usrMsg sndTemp; // dados da temperatura
  14. var usrMsg qData;// queue
  15. sndData.type = 1;
  16.  
  17. sndTemp.source = nodeId;// teremos info do No
  18. sndTemp.target = pai;// info ‘Quem Enviou Ao No’(pai)
  19.  
  20. sndData.target = BROADCAST; // ENVIA PARA TODOS (inundacao)
  21. sndData.source = nodeId;//envia node ID
  22. // Montar arvore
  23. par/and do
  24.     if nodeId == 11 then // se no = fonte
  25.         emit SEND(sndData);//faz broadcast
  26.         sndTemp.target = 1;//
  27.     else
  28.         sndData = await RECEIVE;//espera receber pacote
  29.         sndTemp.target = sndData.source;//envia p/ pai o no
  30.         sndData.source = nodeId; // no de quem enviou gravado
  31.         emit SEND(sndData);// envia a data registrada
  32.     end
  33. with
  34.     await 10s;
  35. end
  36.  
  37.  
  38. //Loops paralelos
  39. par do
  40.     // ler temperatura
  41.     await (nodeId/10)s;
  42.     loop do
  43.         emit REQ_TEMP();
  44.         sndTemp.d16[0] = await TEMP; // espera inserir temperatura
  45.         inc sndTemp.d8[0];
  46.         qPut(sndTemp);// empilha temperatura
  47.         await 15s;
  48.     end
  49. with
  50.     //salvar mensagem de radio - filho
  51.     loop do
  52.         sndData = await RECEIVE; // espera receber
  53.         sndData.target = sndTemp.target;// ele esta passando
  54.         qPut(sndData); // temperatura para o pai.
  55.     end
  56. with
  57.     loop do
  58.         await Q_READY; //espera a fila estar vazia
  59.         loop do
  60.             qGet(qData);//gets msg from queue
  61.             emit SEND(qData);//envia msg
  62.             await SEND_DONE;//espera envio terminar
  63. await 1s;
  64. if qSize() ==0 then // se tam da queue ==0
  65. break;
  66. end
  67. end
  68. end
  69. end
  70. //fim
Tags: terra ceut
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement