void coms_test() { IF_SET set; uint8_t ifaces=0; comBuf *recvd; com_mode(IFACE_SERIAL, IF_LISTEN); #ifdef PLATFORM_LINUX com_mode(IFACE_TERMINAL, IF_LISTEN); #else com_mode(IFACE_RADIO, IF_LISTEN); #endif while(1){ IF_ZERO(&set); IF_SET(IFACE_SERIAL, &set); #ifdef PLATFORM_LINUX IF_SET(IFACE_TERMINAL, &set); #else IF_SET(IFACE_RADIO, &set); #endif ifaces = com_select(&set,2000); if(IF_ISSET(IFACE_SERIAL, &set)){ printf("serial brought us back\n"); recvd = com_recv(IFACE_SERIAL); com_free_buf(recvd); } #ifdef PLATFORM_LINUX else if(IF_ISSET(IFACE_TERMINAL, &set)){ printf("terminal brought us back\n"); recvd = com_recv(IFACE_TERMINAL); com_free_buf(recvd); } #else else if(IF_ISSET(IFACE_RADIO, &set)){ printf("radio brought us back\n"); recvd = com_recv(IFACE_RADIO); printf("[%C-%C]", recvd->data[0], recvd->data[recvd->size-1]); com_free_buf(recvd); } #endif else { printf("timed out, returned %d ifaces\n",ifaces); } } }
void recv_thread(void) { while(1) { IF_SET set; IF_ZERO(&set); IF_SET(IFACE_RADIO, &set); if(com_select(&set, 1000)) { comBuf* p = com_recv(IFACE_RADIO); if (p && p->data[0] == PKT_DO_SENSE) { if (p->size != 5) continue; if (crc_compute(p->data, 3) != buf_extract_WORD(p->data, 3)) continue; send_packet(PKT_REQUESTED_SENSE); } com_free_buf(p); } } }
static int imp_get_mfcc_ttls(if_set *p_ttls, int length, pi_addr *pi_src, pi_addr *p_group) { imp_interface *p_if = imp_interface_first(); unsigned char flag = 0; if (pi_src->ss.ss_family != p_group->ss.ss_family) { IMP_LOG_ERROR("unmatch family"); return 0; } while(p_if) { if (p_if->type != INTERFACE_UPSTREAM && imp_get_is_forward(p_if, p_group, pi_src) && p_if->if_index < length) { int vmif = 0; vmif = k_get_vmif(p_if->if_index, p_group->ss.ss_family); IF_SET(vmif, p_ttls); flag = 1; } p_if = LIST_NEXT(p_if, link); } if (flag == 0) IMP_LOG_DEBUG("group %s isn't interest in packet from %s\n", imp_pi_ntoa(p_group), imp_pi_ntoa(pi_src)); return flag; }
void gba_state::request_irq(uint32_t int_type) { // set flag for later recovery IF_SET(int_type); // is this specific interrupt enabled? int_type &= IE; if (int_type != 0) { // master enable? if (IME & 1) { m_maincpu->set_input_line(ARM7_IRQ_LINE, ASSERT_LINE); m_maincpu->set_input_line(ARM7_IRQ_LINE, CLEAR_LINE); } } }
/* ** Removes the multicast routed '*Dp' from the kernel routes ** ** returns: - 0 if the function succeeds ** - the errno value for non-fatal failure condition */ int delMRoute( struct MRouteDesc *Dp ) { int MifIx; struct mf6cctl CtlReq; int i; CtlReq.mf6cc_origin = Dp->OriginAdr; CtlReq.mf6cc_mcastgrp = Dp->McAdr; CtlReq.mf6cc_parent = Dp->InVif; for ( MifIx = 0; MifIx < MAX_MC_MIFS; MifIx++ ) { if ( Dp->TtlVc[ MifIx ] > 0 ) { IF_SET( MifIx, &CtlReq.mf6cc_ifset ); } } if ( setsockopt( MRouterFD, IPPROTO_IPV6, MRT6_DEL_MFC, (void *)&CtlReq, sizeof(CtlReq) ) ) { atlog( LOG_ERR, errno, "MRT6_DEL_MFC set failed\n"); } /* for (i = 0; i < sizeof(struct sockaddr_in6); i++) printf("%02x ", ((char *)(&CtlReq.mf6cc_origin))[i] & 255); printf("\n"); for (i = 0; i < sizeof(struct sockaddr_in6); i++) printf("%02x ", ((char *)(&CtlReq.mf6cc_mcastgrp))[i] & 255); printf("\n"); printf ("CtlReq.mf6cc_parent = %d\n", CtlReq.mf6cc_parent); for (i = 0; i < sizeof(struct if_set); i++) printf("%02x ", ((char *)(&CtlReq.mf6cc_ifset))[i] & 255); printf("\n\n"); */ return 0; }