00001 /*----------------------------------------------------------------------------*/ 00009 /*----------------------------------------------------------------------------*/ 00010 00011 #include <ProgConfig.h> 00012 00013 PT_THREAD (BaseCoord (struct pt *pt)) 00014 { 00015 unsigned int id_x_source, id_y_source ; 00016 #if defined(NOEUD) 00017 int nb_bases=0; 00018 #endif 00019 00020 00021 00022 PT_BEGIN (pt) ; 00023 00024 while (1) 00025 { 00026 /*expect for having flag*/ 00027 PT_WAIT_UNTIL (pt, Flag_PT.baseCoord == 1) ; 00028 Flag_PT.baseCoord = 0 ; 00029 00030 #if defined(BASE) 00031 /*Reading of the id of the REQbase sender*/ 00032 id_x_source = Ptr_recep_lect->trame_brute.REQbase.id_x_source ; 00033 id_y_source = Ptr_recep_lect->trame_brute.REQbase.id_y_source ; 00034 00035 if(BUFFER_ENVOI_PAS_PLEIN()) 00036 { 00037 /*Build of the replied frame*/ 00038 Ptr_envoi->historique = ETAPE2 ; 00039 Ptr_envoi->nb_envois = 0 ; 00040 Ptr_envoi->trame_brute.REPbase.mode_transmission = SINGLE_HOP_ACK ; 00041 Ptr_envoi->trame_brute.REPbase.type = BASE_COORD ; 00042 Ptr_envoi->trame_brute.REPbase.id_x_source = Id_x ; 00043 Ptr_envoi->trame_brute.REPbase.id_y_source = Id_y ; 00044 Ptr_envoi->trame_brute.REPbase.id_x_dest = id_x_source ; 00045 Ptr_envoi->trame_brute.REPbase.id_y_dest = id_y_source ; 00046 Ptr_envoi->trame_brute.REPbase.nb_bases = 1; 00047 Ptr_envoi->trame_brute.REPbase.x_base = Id_x; 00048 Ptr_envoi->trame_brute.REPbase.y_base = Id_y; 00049 Ptr_envoi = Ptr_envoi + 1 ; 00050 }else serial_puts("ful"); 00051 ERASE_BUFFER_RECEP_LINE(); 00052 00053 #elif defined(NOEUD) 00054 00055 /*Reading of the id of the REQbase sender*/ 00056 id_x_source = Ptr_recep_lect->trame_brute.REQbase.id_x_source ; 00057 id_y_source = Ptr_recep_lect->trame_brute.REQbase.id_y_source ; 00058 00059 nb_bases = (Ptr_bases - Tab_bases) % sizeof(noeud); 00060 00061 if(BUFFER_ENVOI_PAS_PLEIN() && nb_bases > 0) 00062 { 00063 /*Build of the replied frame*/ 00064 Ptr_envoi->historique = ETAPE2 ; 00065 Ptr_envoi->nb_envois = 0 ; 00066 Ptr_envoi->trame_brute.REPbase.mode_transmission = SINGLE_HOP_ACK ; 00067 Ptr_envoi->trame_brute.REPbase.type = BASE_COORD ; 00068 Ptr_envoi->trame_brute.REPbase.id_x_source = Id_x ; 00069 Ptr_envoi->trame_brute.REPbase.id_y_source = Id_y ; 00070 Ptr_envoi->trame_brute.REPbase.id_x_dest = id_x_source ; 00071 Ptr_envoi->trame_brute.REPbase.id_y_dest = id_y_source ; 00072 Ptr_envoi->trame_brute.REPbase.nb_bases = nb_bases; 00073 Ptr_envoi->trame_brute.REPbase.x_base = Tab_bases->x; 00074 Ptr_envoi->trame_brute.REPbase.y_base = Tab_bases->y; 00075 Ptr_envoi = Ptr_envoi + 1 ; 00076 }else serial_puts("ful"); 00077 00078 ERASE_BUFFER_RECEP_LINE(); 00079 00080 #endif 00081 } 00082 PT_END (pt) ; 00083 }