int str2num(const char *const_str) { char * str = (char *)const_str; int ret; if(strncmp(str,"0x",2) && strncmp(str,"0X",2)) { dbg_str(DBG_DETAIL,"str is dex data,convert func is atoi"); ret = atoi(const_str); } else { dbg_str(DBG_DETAIL,"str is hex data,convert func is hexstr2num"); ret = hexstr2num(const_str); } return ret; }
int main(int argc, char *argv[]) { netif_t netif; raw_packet_t raw_packet; packet_t *packet; //header_t *header; mac_address_t mac = { .addr = { 0x00, 0x01, 0x20, 0x00, 0x00, 0x01 } }; mac_address_t mac2; uint8_t mac_str[STR_MAC_ADDRESS_MAX_LEN]; uint32_t num; uint8_t str[20] = "12345678"; hexstr2num(&num, str, 8); printf("decimal = %" PRIu32 " hex = 0x%" PRIx32 "\n", num, num); if (mac_address_convert_to_string(&mac, mac_str)) { printf("tostring: true: %s\n", mac_str); } else { printf("tostring: false\n"); } if (mac_address_convert_from_string(&mac2, mac_str)) { printf("fromstring: true: %02" PRIx8 ":%02" PRIx8 ":%02" PRIx8 ":%02" PRIx8 ":%02" PRIx8 ":%02" PRIx8 "\n", mac2.addr[0], mac2.addr[1], mac2.addr[2], mac2.addr[3], mac2.addr[4], mac2.addr[5]); } else { printf("fromstring: false\n"); } return 0; if (argc != 3) { printf("usage: %s ifname ip-address mac-address\n", argv[0]); return -1; } if (!netif_init(&netif, argv[1])) { return false; } raw_packet_init(&raw_packet); //packet = create_ptp2_signaling_req( &slave_mac, &slave_ipv4); object_release(packet); return 0; }
bool mac_address_convert_from_string(mac_address_t *mac, const uint8_t *str) { uint16_t i; /* 0 2 3 5 6 8 9 11 13 */ /* xx : xx : xx : xx : xx : xx */ if (str != NULL) { if (strnlen((const char *) str, STR_MAC_ADDRESS_MAX_LEN) != (STR_MAC_ADDRESS_MAX_LEN - 1)) { return false; } for (i = 0; *str != '\0' && i < MAC_ADDRESS_LEN; str += 3, i++) { hexstr2num(&(mac->addr[i]), str, MAC_BLOCK_WIDTH); if (str[2] != ':' && str[2] != '\0') { return false; } } } return true; }
/* call hiscore_open once after loading a game */ void hiscore_init (running_machine &machine) { memory_range *mem_range = state.mem_range; file_error filerr; const char *db_filename = machine.options().value(OPTION_HISCORE_FILE); /* high score definition file */ const char *name = machine.system().name; state.hiscores_have_been_loaded = 0; while (mem_range) { if (strstr(machine.system().source_file,"cinemat.c") > 0) { machine.cpu[mem_range->cpu]->memory().space(AS_DATA)->write_byte(mem_range->addr, ~mem_range->start_value); machine.cpu[mem_range->cpu]->memory().space(AS_DATA)->write_byte(mem_range->addr + mem_range->num_bytes-1, ~mem_range->end_value); mem_range = mem_range->next; } else { machine.cpu[mem_range->cpu]->memory().space(AS_PROGRAM)->write_byte(mem_range->addr, ~mem_range->start_value); machine.cpu[mem_range->cpu]->memory().space(AS_PROGRAM)->write_byte(mem_range->addr + mem_range->num_bytes-1,~mem_range->end_value); mem_range = mem_range->next; } } state.mem_range = NULL; emu_file f = emu_file(OPEN_FLAG_READ); filerr = f.open(db_filename); if (filerr == FILERR_NONE) { char buffer[MAX_CONFIG_LINE_SIZE]; enum { FIND_NAME, FIND_DATA, FETCH_DATA } mode; mode = FIND_NAME; while (f.gets (buffer, MAX_CONFIG_LINE_SIZE)) { if (mode==FIND_NAME) { if (matching_game_name (buffer, name)) { mode = FIND_DATA; LOG(("hs config found!\n")); } } else if (is_mem_range (buffer)) { const char *pBuf = buffer; mem_range = global_alloc_array(memory_range, sizeof(memory_range)); if (mem_range) { mem_range->cpu = hexstr2num (&pBuf); mem_range->addr = hexstr2num (&pBuf); mem_range->num_bytes = hexstr2num (&pBuf); mem_range->start_value = hexstr2num (&pBuf); mem_range->end_value = hexstr2num (&pBuf); mem_range->next = NULL; { memory_range *last = state.mem_range; while (last && last->next) last = last->next; if (last == NULL) { state.mem_range = mem_range; } else { last->next = mem_range; } } mode = FETCH_DATA; } else { hiscore_free(); break; } } else { /* line is a game name */ if (mode == FETCH_DATA) break; } } f.close (); } timer = machine.scheduler().timer_alloc(FUNC(hiscore_periodic), NULL); timer->adjust(machine.primary_screen->frame_period(), 0, machine.primary_screen->frame_period()); machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(hiscore_close), &machine)); }
/* call hs_open once after loading a game */ void hs_open (void) { FILE *f = NULL; char path[MAX_PATH]; #ifdef N900 sprintf(path, "%s%s", "/opt/cps2emu/config/", db_filename); #else sprintf(path, "%s%s", launchDir, db_filename); #endif if ((f = fopen(path, "rb")) == NULL) { msg_printf("High score DB file is broken.\n"); } else { char buffer[MAX_CONFIG_LINE_SIZE]; enum { FIND_NAME, FIND_DATA, FETCH_DATA } mode; mode = FIND_NAME; hs_free(); state.hiscore_file_size = 0; //LOG(("hs_open: '%s'\n", game_name)); while (fgets (buffer, MAX_CONFIG_LINE_SIZE, f)) { if (mode==FIND_NAME) { if (matching_game_name (buffer)) { mode = FIND_DATA; //LOG(("hs config found!\n")); } } else if (is_mem_range (buffer)) { const char *pBuf = buffer; struct mem_range *mem_range = malloc(sizeof(struct mem_range)); if (mem_range) { mem_range->cpu = hexstr2num (&pBuf); mem_range->addr = hexstr2num (&pBuf); mem_range->num_bytes = hexstr2num (&pBuf); mem_range->start_value = hexstr2num (&pBuf); mem_range->end_value = hexstr2num (&pBuf); state.hiscore_file_size += mem_range->num_bytes; mem_range->next = NULL; { struct mem_range *last = state.mem_range; while (last && last->next) last = last->next; if (last == NULL) state.mem_range = mem_range; else last->next = mem_range; } mode = FETCH_DATA; } else { hs_free(); break; } } else { /* line is a game name */ if (mode == FETCH_DATA) break; } } fclose (f); } state.hiscores_have_been_loaded = 0; if (state.mem_range) { struct mem_range *mem_range = state.mem_range; while (mem_range) { //computer_writemem_byte( // mem_range->cpu, // mem_range->addr, // ~mem_range->start_value //); m68000_write_memory_8(mem_range->addr, ~mem_range->start_value); //computer_writemem_byte( // mem_range->cpu, // mem_range->addr + mem_range->num_bytes-1, // ~mem_range->end_value //); m68000_write_memory_8(mem_range->addr + mem_range->num_bytes-1,~mem_range->end_value); mem_range = mem_range->next; } //printf ("cpu:%d, addr:%d, bytes:%d, start_value:%d, end_value:%d\n", state.mem_range->cpu, state.mem_range->addr, state.mem_range->num_bytes, state.mem_range->start_value, state.mem_range->end_value); } else { option_hiscore = 0; } }
/* call hiscore_open once after loading a game */ void hiscore_init (running_machine &machine) { memory_range *mem_range = state.mem_range; address_space *initspace; file_error filerr; const char *name = machine.system().name; state.hiscores_have_been_loaded = 0; while (mem_range) { if (strstr(machine.system().source_file,"cinemat.c") > 0) { initspace = &machine.cpu[mem_range->cpu]->memory().space(AS_DATA); initspace->write_byte(mem_range->addr, ~mem_range->start_value); initspace->write_byte(mem_range->addr + mem_range->num_bytes-1, ~mem_range->end_value); mem_range = mem_range->next; } else { initspace = &machine.cpu[mem_range->cpu]->memory().space(AS_PROGRAM); initspace->write_byte(mem_range->addr, ~mem_range->start_value); initspace->write_byte(mem_range->addr + mem_range->num_bytes-1, ~mem_range->end_value); mem_range = mem_range->next; } } state.mem_range = nullptr; emu_file f(machine.options().high_path(), OPEN_FLAG_READ); filerr = f.open("hiscore.dat"); if (filerr == FILERR_NONE) { char buffer[MAX_CONFIG_LINE_SIZE]; enum { FIND_NAME, FIND_DATA, FETCH_DATA } mode; mode = FIND_NAME; while (f.gets(buffer, MAX_CONFIG_LINE_SIZE)) { if (mode == FIND_NAME) { if (matching_game_name (buffer, name)) mode = FIND_DATA; } else if (is_mem_range (buffer)) { const char *pBuf = buffer; mem_range = (memory_range *)malloc(sizeof(memory_range)); if (mem_range) { mem_range->cpu = hexstr2num (&pBuf); mem_range->addr = hexstr2num (&pBuf); mem_range->num_bytes = hexstr2num (&pBuf); mem_range->start_value = hexstr2num (&pBuf); mem_range->end_value = hexstr2num (&pBuf); mem_range->next = nullptr; { memory_range *last = state.mem_range; while (last && last->next) last = last->next; if (last == nullptr) state.mem_range = mem_range; else last->next = mem_range; } mode = FETCH_DATA; } else { hiscore_free(); break; } } else { /* line is a game name */ if (mode == FETCH_DATA) break; } } f.close(); } timer = machine.scheduler().timer_alloc(FUNC(hiscore_periodic)); timer->adjust(machine.first_screen()->frame_period(), 0, machine.first_screen()->frame_period()); machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(hiscore_close), &machine)); }
void HiscoreInit() { Debug_HiscoreInitted = 1; if (!CheckHiscoreAllowed()) return; HiscoresInUse = 0; TCHAR szDatFilename[MAX_PATH]; _stprintf(szDatFilename, _T("%shiscore.dat"), szAppHiscorePath); FILE *fp = _tfopen(szDatFilename, _T("r")); if (fp) { char buffer[MAX_CONFIG_LINE_SIZE]; enum { FIND_NAME, FIND_DATA, FETCH_DATA } mode; mode = FIND_NAME; while (fgets(buffer, MAX_CONFIG_LINE_SIZE, fp)) { if (mode == FIND_NAME) { if (matching_game_name(buffer, BurnDrvGetTextA(DRV_NAME))) { mode = FIND_DATA; } } else { if (is_mem_range(buffer)) { if (nHiscoreNumRanges < HISCORE_MAX_RANGES) { const char *pBuf = buffer; HiscoreMemRange[nHiscoreNumRanges].Loaded = 0; HiscoreMemRange[nHiscoreNumRanges].nCpu = hexstr2num(&pBuf); HiscoreMemRange[nHiscoreNumRanges].Address = hexstr2num(&pBuf); HiscoreMemRange[nHiscoreNumRanges].NumBytes = hexstr2num(&pBuf); HiscoreMemRange[nHiscoreNumRanges].StartValue = hexstr2num(&pBuf); HiscoreMemRange[nHiscoreNumRanges].EndValue = hexstr2num(&pBuf); HiscoreMemRange[nHiscoreNumRanges].ApplyNextFrame = 0; HiscoreMemRange[nHiscoreNumRanges].Applied = 0; HiscoreMemRange[nHiscoreNumRanges].Data = (UINT8*)malloc(HiscoreMemRange[nHiscoreNumRanges].NumBytes); memset(HiscoreMemRange[nHiscoreNumRanges].Data, 0, HiscoreMemRange[nHiscoreNumRanges].NumBytes); #if 1 && defined FBA_DEBUG bprintf(PRINT_IMPORTANT, _T("Hi Score Memory Range %i Loaded - CPU %i, Address %x, Bytes %02x, Start Val %x, End Val %x\n"), nHiscoreNumRanges, HiscoreMemRange[nHiscoreNumRanges].nCpu, HiscoreMemRange[nHiscoreNumRanges].Address, HiscoreMemRange[nHiscoreNumRanges].NumBytes, HiscoreMemRange[nHiscoreNumRanges].StartValue, HiscoreMemRange[nHiscoreNumRanges].EndValue); #endif nHiscoreNumRanges++; mode = FETCH_DATA; } else { break; } } else { if (mode == FETCH_DATA) break; } } } fclose(fp); } if (nHiscoreNumRanges) HiscoresInUse = 1; TCHAR szFilename[MAX_PATH]; _stprintf(szFilename, _T("%s%s.hi"), szAppHiscorePath, BurnDrvGetText(DRV_NAME)); fp = _tfopen(szFilename, _T("r")); INT32 Offset = 0; if (fp) { UINT32 nSize = 0; while (!feof(fp)) { fgetc(fp); nSize++; } UINT8 *Buffer = (UINT8*)malloc(nSize); rewind(fp); fgets((char*)Buffer, nSize, fp); for (UINT32 i = 0; i < nHiscoreNumRanges; i++) { for (UINT32 j = 0; j < HiscoreMemRange[i].NumBytes; j++) { HiscoreMemRange[i].Data[j] = Buffer[j + Offset]; } Offset += HiscoreMemRange[i].NumBytes; HiscoreMemRange[i].Loaded = 1; #if 1 && defined FBA_DEBUG bprintf(PRINT_IMPORTANT, _T("Hi Score Memory Range %i Loaded from file\n"), i); #endif } if (Buffer) { free(Buffer); Buffer = NULL; } fclose(fp); } nCpuType = -1; }
/* call hs_open once after loading a game */ void hs_open (const char *name) { mame_file *f = mame_fopen (NULL, db_filename, FILETYPE_HIGHSCORE_DB, 0); state.mem_range = NULL; LOG(("hs_open: '%s'\n", name)); if (f) { char buffer[MAX_CONFIG_LINE_SIZE]; enum { FIND_NAME, FIND_DATA, FETCH_DATA } mode; mode = FIND_NAME; while (mame_fgets (buffer, MAX_CONFIG_LINE_SIZE, f)) { if (mode==FIND_NAME) { if (matching_game_name (buffer, name)) { mode = FIND_DATA; LOG(("hs config found!\n")); } } else if (is_mem_range (buffer)) { const char *pBuf = buffer; struct mem_range *mem_range = osd_malloc(sizeof(struct mem_range)); if (mem_range) { mem_range->cpu = hexstr2num (&pBuf); mem_range->addr = hexstr2num (&pBuf); mem_range->num_bytes = hexstr2num (&pBuf); mem_range->start_value = hexstr2num (&pBuf); mem_range->end_value = hexstr2num (&pBuf); mem_range->next = NULL; { struct mem_range *last = state.mem_range; while (last && last->next) last = last->next; if (last == NULL) { state.mem_range = mem_range; } else { last->next = mem_range; } } mode = FETCH_DATA; } else { hs_free(); break; } } else { /* line is a game name */ if (mode == FETCH_DATA) break; } } mame_fclose (f); } }