отправить реквизитное сообщение от BS всем узлам сети C-Cooja

У меня есть 2 вида узлов: узел базовой станции и простой узел.

Я хочу смоделировать сеть, которая воспроизводит парадигму запрос — ответ с помощью симулятора Cooja.

Я новичок в Куджа, и я хочу разделить мою сеть на ячейки и выбрать репрезентативный узел в каждой ячейке и позволить другим членам ячейки отправить сообщение на репрезентативный узел ячейки, а затем каждый репрезентативный узел соберет эти информацию и отправлять ее представительным узлам восходящего потока, пока она не достигнет BS.
Сначала BS отправит запрос, затем простые узлы ответят на этот набор, собрав информацию у членов своей ячейки. Допустим, в каждой ячейке будет 4 узла, а 5-й простой узел является репрезентативным узлом, который будет собирать эту информацию и отправлять ее в восходящий узел, пока не достигнет BS.

я начинаю с использования кода одноадресной рассылки, чтобы отправить сообщение репрезентативному узлу для ячейки, но когда я попытался нацелиться на более чем один идентификатор репрезентативных узлов, чтобы создать более одной соты, он не работает, он всегда нацелен на ID1, который является репрезентативный узел ячейки # 1, я также хочу на самом деле отправить значение функции casaer (ключ и шифр) вместо сообщения приветствия репрезентативному узлу.

мои вопросы:
Как я могу на самом деле отправить значение функции? и как представительский узел будет собирать эту информацию и отправлять ее в представительский узел восходящего потока ???

это то, что я сделал до сих пор ..

PROCESS(example_unicast_process, " unicast");
AUTOSTART_PROCESSES(&example_unicast_process);
int static b = 0  ;
int i=0;
int Table[10]={};

/*---------------------------------------------------------------------------*/
static void
recv_uc(struct unicast_conn *c, const rimeaddr_t *from)
{

do { i++ ;
if ( Table[i] == from->u8[0] );
b=Table[from->u8[0]]++ ;
printf(" message received from %d.%d  and & = %d \n",
from->u8[0], from->u8[1], b);} while (i<1);

}

static const struct unicast_callbacks unicast_callbacks = {recv_uc};
static struct unicast_conn uc;

PROCESS_THREAD(example_unicast_process, ev, data)

{
void caesar (char cipher[], int shift) {
int i = 0;
while (cipher[i] != '\0') {
cipher[i] += (shift);
i++;
}
printf("%s\n", cipher);
}PROCESS_EXITHANDLER(unicast_close(&uc);)

PROCESS_BEGIN();
unicast_open(&uc, 146, &unicast_callbacks);while(1) {
static struct etimer et;
rimeaddr_t addr;
etimer_set(&et, CLOCK_SECOND*9);
char cipher[50];
int key = 5;
PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et));int n = 1||5||8;
packetbuf_copyfrom ("Hello",7);
addr.u8[0]= n ;
addr.u8[1]= 0 ;
packetbuf_copyto (cipher);
if(addr.u8[0] == n)
{if(rimeaddr_node_addr.u8[0] != 1)
{printf("%u.%u: sending unicast to address %u.%u = ",
rimeaddr_node_addr.u8[0],
rimeaddr_node_addr.u8[1],
addr.u8[0]= n,
addr.u8[1]=0  );
caesar (cipher, key);
if( addr.u8[0] == 1||5||8)  {
unicast_send(&uc,&addr);
}
}
}
}
PROCESS_END();

}

что я должен делать ? это не работает …, я ценю вашу тяжелую работу со мной, ребята ..

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]