⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filesystem.lst

📁 ENC28J60 System HTTP
💻 LST
📖 第 1 页 / 共 5 页
字号:
 431:io/filesystem.c **** 					if (c)
 432:io/filesystem.c **** 						softuart_putc(c);
 433:io/filesystem.c **** 					else
 434:io/filesystem.c **** 						break;
 435:io/filesystem.c **** 				}
 436:io/filesystem.c **** 				softuart_putnewline();
 437:io/filesystem.c **** 				#endif
 438:io/filesystem.c **** 
 439:io/filesystem.c **** 			}
 440:io/filesystem.c **** 		}
 441:io/filesystem.c **** 	}
 442:io/filesystem.c **** 	#if FILESYSTEM_DEBUG
 443:io/filesystem.c **** 	softuart_putnewline();
 444:io/filesystem.c **** 	softuart_putnewline();
 445:io/filesystem.c **** 	#endif
 446:io/filesystem.c **** }*/
 447:io/filesystem.c **** 
 448:io/filesystem.c **** unsigned char filesystem_filename_to_buffer(unsigned char *buffer, unsigned int fnpos){
 449:io/filesystem.c **** 	unsigned int pos = 0;
 450:io/filesystem.c **** 	unsigned char k;
 451:io/filesystem.c **** 
 452:io/filesystem.c **** 	//add filename
 453:io/filesystem.c **** 	for (k=0; k<8; k++){
 454:io/filesystem.c **** 		buffer[pos] = dataflash_read_buffer(fnpos*24 + FILESYSTEM_FTABLE_FILENAME_START + k, 0);
 455:io/filesystem.c **** 		
 456:io/filesystem.c **** 		if (buffer[pos] == 0)
 457:io/filesystem.c **** 			break;
 458:io/filesystem.c **** 		
 459:io/filesystem.c **** 		pos++;
 460:io/filesystem.c **** 	}
 461:io/filesystem.c **** 
 462:io/filesystem.c **** 	//add '.'
 463:io/filesystem.c **** 	buffer[pos++] = '.';
 464:io/filesystem.c **** 
 465:io/filesystem.c **** 	for (k=0; k<3; k++){
 466:io/filesystem.c **** 		buffer[pos] = dataflash_read_buffer(fnpos*24 + FILESYSTEM_FTABLE_FILENAME_START + 8 + k, 0);
 467:io/filesystem.c **** 		
 468:io/filesystem.c **** 		if (buffer[pos] == 0)
 469:io/filesystem.c **** 			break;
 470:io/filesystem.c **** 		
 471:io/filesystem.c **** 		pos++;
 472:io/filesystem.c **** 	}
 473:io/filesystem.c **** 	return pos;
 474:io/filesystem.c **** }
 475:io/filesystem.c **** 
 476:io/filesystem.c **** 
 477:io/filesystem.c **** //generate filesystem index
 478:io/filesystem.c **** unsigned int filesystem_generate_index(unsigned char *buffer, unsigned int datapos, unsigned int *l
 479:io/filesystem.c **** 	unsigned int i;
 480:io/filesystem.c **** 	unsigned char j,k;
 481:io/filesystem.c **** 	unsigned int tmp;
 482:io/filesystem.c **** 	unsigned int id;
 483:io/filesystem.c **** 
 484:io/filesystem.c **** 	//every entry looks like:
 485:io/filesystem.c **** 	//IIIII_SSSSS_<a href="/fs/FFFFFFFF.EEE">FFFFFFFF.EEE</a><br>
 486:io/filesystem.c **** 	//-> 5+1+5+1+8+1+3+4 +25 +6= 28+25+6 bytes
 487:io/filesystem.c **** 	//unsigned int  skip_files = 0;
 488:io/filesystem.c **** 	//while((*offset) >= 59){
 489:io/filesystem.c **** 	//	(*offset) = (*offset) - 59;
 490:io/filesystem.c **** 	//	skip_files++;
 491:io/filesystem.c **** 	//}
 492:io/filesystem.c **** 
 493:io/filesystem.c **** 	//file entry buffer:
 494:io/filesystem.c **** 	unsigned char list_entry[60];
 495:io/filesystem.c **** 	unsigned char list_pos = 0;
 496:io/filesystem.c **** 
 497:io/filesystem.c **** 	//search all filesystem table entries:
 498:io/filesystem.c **** 	//-> slow !! we always walk through the whole list!! -> FIXME
 499:io/filesystem.c **** 	for(i=0; i<FILESYSTEM_TABLE_SIZE; i++){
 500:io/filesystem.c **** 		//copy page i to dataflash buffer 0
 501:io/filesystem.c **** 		dataflash_copy_page_to_buffer(i, 0);
 502:io/filesystem.c **** 
 503:io/filesystem.c **** 		//now read 11 filesystem entries:
 504:io/filesystem.c **** 		for(j=0; j<11; j++){
 505:io/filesystem.c **** 			//check if there is already a file with our id:
 506:io/filesystem.c **** 			id  = dataflash_read_buffer(j*24 + FILESYSTEM_FTABLE_ID_HI, 0)<<8;
 507:io/filesystem.c **** 			id |= dataflash_read_buffer(j*24 + FILESYSTEM_FTABLE_ID_LO, 0);
 508:io/filesystem.c **** 
 509:io/filesystem.c **** 			if (id != 0x0000){
 510:io/filesystem.c **** 				//if (skip_files == 0){
 511:io/filesystem.c **** 					#if FILESYSTEM_DEBUG
 512:io/filesystem.c **** 					softuart_puts_progmem("FS  : found id ");
 513:io/filesystem.c **** 					softuart_put_uint16(id);
 514:io/filesystem.c **** 					#endif
 515:io/filesystem.c **** 					//we expect this file -> print info!
 516:io/filesystem.c **** 
 517:io/filesystem.c **** 					//intitialise entry buffer pos
 518:io/filesystem.c **** 					list_pos = 0;
 519:io/filesystem.c **** 
 520:io/filesystem.c **** 					//add file id
 521:io/filesystem.c **** 					//string_uint16_to_buffer(&list_entry[list_pos], id);
 522:io/filesystem.c **** 					//list_pos += 5;
 523:io/filesystem.c **** 					string_progmem_to_buffer(PSTR("<img src=\"/site/ficon.gif\" align=middle> "), &list_entry[list
 524:io/filesystem.c **** 					list_pos += 41;
 525:io/filesystem.c **** 
 526:io/filesystem.c **** 					//add <a href="/fs/
 527:io/filesystem.c **** 					string_progmem_to_buffer(PSTR("<a href=\"/fs/"), &list_entry[list_pos], 13);
 528:io/filesystem.c **** 					list_pos += 13;
 529:io/filesystem.c **** 
 530:io/filesystem.c **** 					//now copy requested data from list_entry buffer to 
 531:io/filesystem.c **** 					//tcp buffer:
 532:io/filesystem.c **** 					//if (list_pos>=60) softuart_puts_progmem("FS: OVERFLOW: ");softuart_put_uint8(list_pos);
 533:io/filesystem.c **** 					for(k=0; k<list_pos; k++){
 534:io/filesystem.c **** 						if ((*offset) > 0){
 535:io/filesystem.c **** 							(*offset)--;
 536:io/filesystem.c **** 						}else{
 537:io/filesystem.c **** 							buffer[datapos++] = list_entry[k];
 538:io/filesystem.c **** 							(*len)--;
 539:io/filesystem.c **** 							if ((*len) == 0)
 540:io/filesystem.c **** 								return 0;
 541:io/filesystem.c **** 						}
 542:io/filesystem.c **** 					}
 543:io/filesystem.c **** 					list_pos = 0;
 544:io/filesystem.c **** 
 545:io/filesystem.c **** 					//add filename
 546:io/filesystem.c **** 					list_pos += filesystem_filename_to_buffer(&list_entry[list_pos], j);
 547:io/filesystem.c **** 
 548:io/filesystem.c **** 					//add ">
 549:io/filesystem.c **** 					string_progmem_to_buffer(PSTR("\">"), &list_entry[list_pos], 2);
 550:io/filesystem.c **** 					list_pos += 2;
 551:io/filesystem.c **** 
 552:io/filesystem.c **** 					//add filename again
 553:io/filesystem.c **** 					list_pos += filesystem_filename_to_buffer(&list_entry[list_pos], j);
 554:io/filesystem.c **** 
 555:io/filesystem.c **** 					//add </a><br>
 556:io/filesystem.c ****  					string_progmem_to_buffer(PSTR("</a>"), &list_entry[list_pos], 4);
 557:io/filesystem.c **** 					list_pos += 4;
 558:io/filesystem.c **** 
 559:io/filesystem.c **** 					//add ' '
 560:io/filesystem.c **** 					list_entry[list_pos++] = ' ';
 561:io/filesystem.c **** 					
 562:io/filesystem.c **** 					tmp  = dataflash_read_buffer(j*24 + FILESYSTEM_FTABLE_BLOCK_COUNT_HI, 0)<<8;
 563:io/filesystem.c **** 					tmp += dataflash_read_buffer(j*24 + FILESYSTEM_FTABLE_BLOCK_COUNT_LO, 0);
 564:io/filesystem.c **** 
 565:io/filesystem.c **** 					//convert to kbyte
 566:io/filesystem.c **** 					tmp  = tmp / 4; //*256/1024 = /4
 567:io/filesystem.c **** 					if (tmp == 0)
 568:io/filesystem.c **** 						tmp = 1;
 569:io/filesystem.c **** 					//add file size
 570:io/filesystem.c **** 					string_uint16_to_buffer(&list_entry[list_pos], tmp); 
 571:io/filesystem.c **** 					list_pos += 5;
 572:io/filesystem.c **** 				
 573:io/filesystem.c **** 					//add ' '
 574:io/filesystem.c **** 					string_progmem_to_buffer(PSTR("KB "), &list_entry[list_pos], 3);
 575:io/filesystem.c **** 					list_pos += 3;
 576:io/filesystem.c **** 
 577:io/filesystem.c **** 					//now copy requested data from list_entry buffer to 
 578:io/filesystem.c **** 					//tcp buffer:
 579:io/filesystem.c **** 					//if (list_pos>=60) softuart_puts_progmem("FS: OVERFLOW: ");softuart_put_uint8(list_pos);
 580:io/filesystem.c **** 					for(k=0; k<list_pos; k++){
 581:io/filesystem.c **** 						if ((*offset) > 0){
 582:io/filesystem.c **** 							(*offset)--;
 583:io/filesystem.c **** 						}else{
 584:io/filesystem.c **** 							buffer[datapos++] = list_entry[k];
 585:io/filesystem.c **** 							(*len)--;
 586:io/filesystem.c **** 							if ((*len) == 0)
 587:io/filesystem.c **** 								return 0;
 588:io/filesystem.c **** 						}
 589:io/filesystem.c **** 					}
 590:io/filesystem.c **** 
 591:io/filesystem.c **** 					//now add next data, reuse buffer, we do not want to use another 59byte buf !
 592:io/filesystem.c ****  					list_pos = 0;
 593:io/filesystem.c **** 
 594:io/filesystem.c **** 					//add a href part of remove file link:
 595:io/filesystem.c **** 					string_progmem_to_buffer(PSTR(" <a href=\"/adm/rm/"), &list_entry[list_pos], 18);
 596:io/filesystem.c **** 					list_pos += 18;
 597:io/filesystem.c **** 
 598:io/filesystem.c **** 					//add filename
 599:io/filesystem.c **** 					//list_pos += filesystem_filename_to_buffer(&list_entry[list_pos], j);
 600:io/filesystem.c **** 					//add file id:
 601:io/filesystem.c **** 					string_uint16_to_buffer(&list_entry[list_pos], id);
 602:io/filesystem.c **** 					list_pos += 5;
 603:io/filesystem.c **** 
 604:io/filesystem.c **** 					//add rest of href:
 605:io/filesystem.c **** 					string_progmem_to_buffer(PSTR("\">remove</a><br>"), &list_entry[list_pos], 16);
 606:io/filesystem.c **** 					list_pos += 16;
 607:io/filesystem.c **** 
 608:io/filesystem.c **** 					//now copy requested data from list_entry buffer to 
 609:io/filesystem.c **** 					//tcp buffer:
 610:io/filesystem.c **** 					//if (list_pos>=60) softuart_puts_progmem("FS: OVERFLOW: ");softuart_put_uint8(list_pos);
 611:io/filesystem.c **** 					for(k=0; k<list_pos; k++){
 612:io/filesystem.c **** 						if ((*offset) > 0){
 613:io/filesystem.c **** 							(*offset)--;
 614:io/filesystem.c **** 						}else{
 615:io/filesystem.c **** 							buffer[datapos++] = list_entry[k];
 616:io/filesystem.c **** 							(*len)--;
 617:io/filesystem.c **** 							if ((*len) == 0)
 618:io/filesystem.c **** 								return 0;
 619:io/filesystem.c **** 						}
 620:io/filesystem.c **** 					}
 621:io/filesystem.c **** 
 622:io/filesystem.c **** 					#if FILESYSTEM_DEBUG
 623:io/filesystem.c **** 					softuart_puts_progmem(" data created.\r\n");
 624:io/filesystem.c **** 					#endif
 625:io/filesystem.c **** 				//}else{
 626:io/filesystem.c **** 				//	skip_files--;
 627:io/filesystem.c **** 				//}
 628:io/filesystem.c **** 			}
 629:io/filesystem.c **** 		}
 630:io/filesystem.c **** 	}
 631:io/filesystem.c **** 	return datapos;
 632:io/filesystem.c **** }
 633:io/filesystem.c **** 
 634:io/filesystem.c **** //read next byte to data ptr !
 635:io/filesystem.c **** //return: 0 if eof file
 636:io/filesystem.c **** //        1 otherwise
 637:io/filesystem.c **** unsigned char filesystem_get_next_byte(unsigned char *data){
 638:io/filesystem.c **** 	//unsigned int tmp;
 639:io/filesystem.c **** 
 640:io/filesystem.c **** 	//copy flash to buffer
 641:io/filesystem.c **** 	if (filesystem_file_pos == 0){
 642:io/filesystem.c **** 		dataflash_copy_page_to_buffer(filesystem_current_block, 0);
 643:io/filesystem.c **** 		for(unsigned char p=0; p<255; p++)
 644:io/filesystem.c **** 			filesystem_buffer[p] = dataflash_read_buffer(p,0);
 645:io/filesystem.c **** 	}
 646:io/filesystem.c **** 
 647:io/filesystem.c **** 	*data = filesystem_buffer[filesystem_file_pos];
 648:io/filesystem.c **** 	filesystem_file_pos++;
 649:io/filesystem.c **** 
 650:io/filesystem.c **** 	//block end or end of file ?!
 651:io/filesystem.c **** 	if ((filesystem_file_pos == 255)){
 652:io/filesystem.c **** 		filesystem_file_pos = 0;
 653:io/filesystem.c **** 
 654:io/filesystem.c **** 		//load next block:		
 655:io/filesystem.c **** 		filesystem_current_block  = dataflash_read_buffer(FILESYSTEM_FILE_NEXT_HI, 0)<<8;
 656:io/filesystem.c **** 		filesystem_current_block |= dataflash_read_buffer(FILESYSTEM_FILE_NEXT_LO, 0);
 657:io/filesystem.c **** 
 658:io/filesystem.c **** 		#if FILESYSTEM_DEBUG
 659:io/filesystem.c **** 		//softuart_puts_progmem("FS  : next block read: ");
 660:io/filesystem.c **** 		//softuart_put_uint16(filesystem_current_block);
 661:io/filesystem.c **** 		//softuart_putnewline();
 662:io/filesystem.c **** 		#endif
 663:io/filesystem.c **** 		if (filesystem_current_block == 0x0000)
 664:io/filesystem.c **** 			return 0; //eof file
 665:io/filesystem.c **** 	}
 666:io/filesystem.c **** 	return 1;
 667:io/filesystem.c **** }
 668:io/filesystem.c **** 
 669:io/filesystem.c **** 
 670:io/filesystem.c **** unsigned int filesystem_get_data_startat(unsigned char *buffer, unsigned int datapos, unsigned int 
 671:io/filesystem.c **** // 	sunsigned int tmp;
 672:io/filesystem.c **** 	unsigned int count;
 673:io/filesystem.c **** 	//unsigned int pos;
 674:io/filesystem.c **** 	unsigned int i;
 675:io/filesystem.c **** 	while (*data_ptr != 0x0000){
 676:io/filesystem.c **** 		//copy block to buffer0:
 677:io/filesystem.c **** 		dataflash_copy_page_to_buffer(*data_ptr, 0);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -