QAQ ==!

Dependencies:   mbed QEI-1 nRF24L01P xiugai

useful_func.cpp

Committer:
AlexQian
Date:
2019-12-14
Revision:
15:934289377f7a
Parent:
9:d03b1af2b8d8

File content as of revision 15:934289377f7a:

#include "useful_func.h"

#include <stdio.h>

#ifdef ENABLE_FILESYSTEM
extern Serial ser2usb;

void read_file_names(const char *dir, vector<string> & filenames)
//Õâ¸öº¯ÊýºóÆÚ¿ÉÒÔÖØÔسɴøÒ»¸öÊäÈëvector<string>ÒýÓöÔÏóµÄ·½·¨
//ÕâÑùÕâ¸övector¿ÉÒÔ²»ÓÃÉùÃ÷³ÉÈ«¾Ö±äÁ¿
//already reload
{
	//ser2usb.printf("-----Calling read_file_names-----\r\n");
	filenames.clear();
	//ser2usb.printf("reading files...\r\n");
    DIR *dp;//Ò»¸öÎļþµØÖ·¶ÔÏóÖ¸Õë
    struct dirent *dirp;
    //ÏÂÃæÊÇdirentµÄ¶¨Òå
    //struct dirent
    //{
    //    long d_ino;                     
    //    off_t d_off;                    
    //    unsigned short d_reclen;        
    //    char d_name [NAME_MAX+1];       
    //}
    
    /****************************************************************
        ÕâÀïµÄdirent.hÊÇlinuxϵij£ÓÃÍ·Îļþ
        ʹÓ÷½·¨²Î¿´
        https://blog.csdn.net/dream_allday/article/details/75243818
    *****************************************************************/
    int i = 0;
    dp = opendir(dir);
  //read all directory and file names in current directory into filename vector
    while((dirp = readdir(dp)) != NULL) 
    {
		if (strcmp("System Volume Information", dirp->d_name))
		{
			filenames.push_back(string(dirp->d_name));
			//push_backÊÇvector¶ÔÏóÖеÄÒ»¸ö·½·¨
			//ÓÃÓÚ½«ÔªËØÌí¼Óµ½vector¶ÔÏóĩβ
			//ÕâÀïÊǽ«Ò»¸ödirentÀàÐ͵ĽṹÌå¶ÔÏóÖеÄd_name(ÎļþÃû)Ìí¼Óµ½filenamesµÄĩβ
			//r2usb.printf("%d - %s\r\n", i++, dirp->d_name);
		}
    }
    closedir(dp);
	//2usb.printf("file names read\r\n");
}
#endif // ENABLE_FILESYSTEM

#ifdef ENABLE_ESP8266
extern Serial ser2usb;
void mqtt_client_init(
	Esp8266 & client, 
	const char* device_name, 
	const char* publish_topic[][2], 
	const char* subscribe_topic[][2]
)
//³õʼ»¯mqtt¿Í»§¶ËµÄº¯Êý
//Ó¦ÊäÈ붩ÔÄÁбí
{
    client.connect_mqtt_broker("192.168.12.1", device_name, publish_topic, subscribe_topic);

	//subscribe topic
	/*
	for (int i = 0; subscribe_topic[i][0] != NULL; i++)
	{
		ser2usb.printf("subscribe topic \"%s\"\r\n", subscribe_topic[i][0]);
		client.subscribe_control(subscribe_topic[i][0]);
	}
	*/
}
void send_file_names(Esp8266 & client, vector<string> & filenames, const char * publish_topic)
{
	//ser2usb.printf("-----Calling send_file_names-----\r\n");
	//er2usb.printf("filenames:\r\n");
	char filename[128];
	//std::stringstream ss;
	int filenumber = 0;
	client.publish_value(publish_topic, "_upload");
	wait(0.15);
	for(vector<string>::iterator it = filenames.begin(); it < filenames.end(); it++)
    /******************************  
    ÕâÀïiteratorÊÇvectorÀàÖеĵü´úÆ÷¶ÔÏó
    Ñ­»·Àï´ÓvectorµÄµÚÒ»¸öÔªËصØÖ·¿ªÊ¼
    µü´úµ½×îºóÒ»¸ö
    µü´úÆ÷µÄÆäËûÓ÷¨²Î¿´
    https://blog.csdn.net/yyangzhenjie/article/details/74518905
    ******************************/
    {
		//ser2usb.printf("---loop %d---\r\n", filenumber);
//		ss << filenumber << " - " << (*it) << "\r\n";
		sprintf(filename, "%d - %s", filenumber, it->c_str());
		
		//ser2usb.printf("%s\r\n", filename);
		client.publish_value("file_list", filename);
		
		filenumber++;
		sprintf(filename, "");
		wait(0.15);
    }
	client.publish_value("file_list", "_end");
	//er2usb.printf("all sent. \r\n");
}
#endif	// ENABLE_ESP8266