usb挂载一定要延时才能多次挂载


#include "includes.h"
#include <sys/mount.h>
#include <errno.h>
#include "recorder.h"
#include "Define.h" // add by xie

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <sys/un.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <linux/types.h>
#include <linux/netlink.h>
#include <errno.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netinet/in.h>


#define  Uart_Printf printf
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif

#define BUFFER_SIZE 1024

int flag_upgrade = 0;//  升级标志

#define DEV_PLUG   0x1010001
#define DEV_REMOVE  0x1000003
#define DEV_KEEP  0x1030000

TUDS  uds={0,0,0,0,0};

extern int MessageBox(const char *title, int x, int y, int w, int h, int s, int delay);
extern MENUATTR ma_upgrade;
extern int ShowScreenMenu(); //yuan
extern const char *strNoUSBDevice[3][LANGUAGE_NUM];
extern int my_system(char* cmd) ;
extern char flag_usb;


#if 1

//查看文件或文件夹是否存在
//返回值:TRUE:存在,FALSE:不存在
BOOL isFileExist(const char *FileName)
{
 if(FileName == NULL )return FALSE;
 if(access(FileName,F_OK)==0)  // access(filename, 0) == 0 //存在返0否返-1
 {
  return TRUE;
 }
 return FALSE;
}


//新建一文件夹
int CreateFolder(const char *directory)
{
 char dire[50];
 memset(dire,0x0,sizeof(dire));
 strcpy(dire,directory);
 if(mkdir(dire,0777)==-1)
 {
  return -1;
 }
 return 0;
}


int UMountUSB()
{
 char cmd[50];
    sprintf(cmd,"rm -rf %s", UPDATA_DIR1);

   // 将 新建的目录删除 只能删除非空的目录
    if(!umount(UPDATA_DIR1))//|| !rmdir(UPDATA_DIR1))
    {
  printf(" um  %s success \n",UPDATA_DIR1);
  return 0;
 }
 
// if(my_system(cmd))
// {
//  printf(" rm  %s success \n",UPDATA_DIR1);
//  return 0;
// }
 
 return 1;
}


int MountUsb()
{
 char uname[28][28]={"/dev/sda","/dev/sda1","/dev/sdb","/dev/sdb1","/dev/sdc","/dev/sdd","/dev/sde","/dev/sdf","/dev/sdg","/dev/sdh","/dev/sdi","/dev/sdj","/dev/sdk","/dev/sdl","/dev/sdm","/dev/sdn",
        "/dev/sdo","/dev/sdp","/dev/sdq","/dev/sdr","/dev/sds","/dev/sdt","/dev/sdu","/dev/sdv","/dev/sdw","/dev/sdx","/dev/sdy","/dev/sdz"};

 int i=0,result=0,flag=1;
 char cmd[50];
 
 if(isFileExist(UPDATA_DIR1) != 1)
    {
     CreateFolder(UPDATA_DIR1);
    }

 // CreateFolder("/media/usb-sda1");

    for(i=0;i<28;i++)           
    {
  result = mount(uname[i],"/media/usb-sda1","vfat",0,0); // "FAT"
//        sprintf(cmd,"mount %s /media/usb-sda1",uname[i]);
//        result = my_system(cmd);

  if(0 == result) // 挂载成功
//  if(1 == result) // 挂载成功
        {
         if(isFileExist(UPDATA_DIR0) != 1) // U盘中没有ECGDAT这个文件夹则创建一个
         {
          CreateFolder(UPDATA_DIR0);
         }
   
   printf("  mount  %s is successful \n",uname[i]);

   flag = 0;    
            return 1;
        }
  
    }

 if(flag)
    {
     printf(" mount is failed \n");
        umount("/media/usb-sda1");
    }
    return 0;
}

int CopyFile(char *from,char *to)
{
   int from_fd,to_fd;
   int BytesRead,BytesWrite;
   char buffer[BUFFER_SIZE];
   char *ptr;
   int err=0;
 //printu("COPY ::%s To %s\n",from,to);
   /* 打开源文件 */
   if((from_fd=open(from,O_RDONLY))==-1)   /*open file readonly,返回-1表示出错,否则返回文件描述符*/
   {
     //printu(stderr,"Open %s Error:%s\n",from,strerror(errno));
     //exit(1);
  return -1;
   }
   /* 创建目的文件 */
   /* 使用了O_CREAT选项-创建文件,open()函数需要第3个参数,
      mode=S_IRUSR|S_IWUSR表示S_IRUSR 用户可以读 S_IWUSR 用户可以写*/
   if((to_fd=open(to,O_WRONLY|O_CREAT|O_TRUNC,0777))==-1)
   {
        //printu(stderr,"Open %s Error:%s\n",to,strerror(errno));
        //exit(1);
        close(from_fd);
        return -1;
   }
   /* 以下代码是一个经典的拷贝文件的代码 */
   while(BytesRead=read(from_fd,buffer,BUFFER_SIZE))
   {
     /* 一个致命的错误发生了 */
     if((BytesRead==-1)&&(errno!=EINTR))
     {
   err=-1;
         break;
     }
     else if(BytesRead>0)
     {
       ptr=buffer;
       while(BytesWrite=write(to_fd,ptr,BytesRead))
       {
            /* 一个致命错误发生了 */
            if((BytesWrite==-1)&&(errno!=EINTR))
            {
     err=-1;
                break;
            }
            /* 写完了所有读的字节 */
            else if(BytesWrite==BytesRead)
            {
     err=0;
                break;
            }
            /* 只写了一部分,继续写 */
            else if(BytesWrite>0)
            {
                ptr+=BytesWrite;
                BytesRead-=BytesWrite;
            }
       }
      
       /* 写的时候发生的致命错误 */
       if(BytesWrite==-1)
       {
     err=-1;
           break;
       }
     }
   }
   close(from_fd);
   close(to_fd);
   sync();

   return err;
}

int ifUpgrade()  // 检测是否有U盘插入
{
 if(!isFileExist(UPDATA_DIR2))  // 文件名 "/media/usb-sda1/ECGDAT/"
 {
  if(MountUsb() == 1) flag_upgrade = 1;// 如果挂载成功则会有/media/usb-sda1文件夹

  printf("222222\n");
 }

 if(isFileExist(UPDATA_DIR2))
 {
  flag_upgrade =1; // U盘存在则标为1

  printf("3333\n");
  return 1;
 }
 return 0;  // 无U盘
}


int ifUpdate()  // 升级时调用
{

//====法1===============
// ifUpgrade();// 检测U盘是否存在

//=========法2===========
// UMountUSB();
// if(MountUsb())//||flag_upgrade == 1)
// {
//  flag_upgrade =1;
// }
// else
// {
//  flag_upgrade =0;
// }

//========================

 if( ma_upgrade.d == 1 ) // 开始升级
 {
  ma_upgrade.d  = g_Cfg.upgrade = 0; // 将其设为关闭

  if(flag_upgrade == 0) // U盘不在显示一个消息
  {
     GUI_SetBkColor(GUI_WHITE);
     GUI_SetColor(GUI_BLACK);
     GUI_SetFont(DefaulFont[LANGUAGE_CUR]);
     GUI_SetTextMode(GUI_TEXTMODE_NORMAL);

 #if LCD_CM_SIZE==LCD_CM320X240
   MessageBox((const char *)strNoUSBDevice[0][LANGUAGE_CUR],10,40,300,180,0,100);

    #elif  LCD_CM_SIZE==LCD_CM192X64

   GUI_ClearRect(0,0,LCD_XSIZE-2, LCD_YSIZE-2);
   GUI_DispStringHCenterAt(strNoUSBDevice[0][LANGUAGE_CUR], LCD_XSIZE/2, LCD_YSIZE-38);//16 单行,32 双行
 #endif
   usleep(800000);
  }
  else if(flag_upgrade == 1) // U盘在
  {
   if(0 == isFileExist(UPDATA_DIR2"updata")) // 查看是否有升级文件
   {
    printf(" can not find update file\n  ");

#if LCD_CM_SIZE==LCD_CM320X240
   MessageBox((const char *)strNoUSBDevice[3][LANGUAGE_CUR],10,40,300,180,0,100);
 
#elif  LCD_CM_SIZE==LCD_CM192X64

   GUI_ClearRect(0,0,LCD_XSIZE-2, LCD_YSIZE-2);
 
   GUI_DispStringHCenterAt(strNoUSBDevice[3][LANGUAGE_CUR], LCD_XSIZE/2, LCD_YSIZE-38);//16 单行,32 双行
#endif
    usleep(800000);
   }
   else
   { 
    pid_t pid;
    
    if(0 == CopyFile((char *)UPDATA_DIR2"updata", (char *)"/tmp/updata"))// copy success
    {
     chmod("/tmp/updata",0755);
     pid=fork();
     if(pid<0)
     {
      perror("error in fork!");
     }
     else  // pid success
     {
      if(pid==0)
      {
       sleep(2); 
       printf("executed updata\n");


       if(execl("/tmp/updata", "updata", "executed by Main", NULL)<0)
       {
        perror("Error on execl /tmp/updata");
       }

       
       printf("executed updata fail\n");
       exit(0);
      }
      else
      {
       printf("exit Main\n");
      
       //在此做程序退出处理
       exit(0);
      }
     }
    }
   } 
  }

  ShowScreenMenu();
  ShowScreenMenu();
 }
}


#endif

#if 0

void usb_dev_status_1(int flag)
{
   switch(flag)//扫描usb hub上port状态
   {
    case DEV_PLUG://usb设备接入 
                     uds.devtype=8;
                     uds.ready=1;
                            
                        beginbeep();      
                       OSTimeDly(10); 
                       stopbeep(); 

      break;
            
    case DEV_REMOVE://usb设备移除
   
      uds.devnum=0;
      uds.ifnum=0; 
        uds.devtype=0;
          uds.ready=0;
          uds.inuse=0;
          
            beginbeep();      
      OSTimeDly(10); 
      stopbeep();
  
        break;
    case DEV_KEEP://接入状态
        break;
       default:
           uds.devtype=0;
          uds.ready=0;
        break;
   } 
}


void task_usb1(void)

 while(1)   // 这个循环可以执行
 {
  if(ifUpgrade() == 1 )   //u 盘存在
  {
   if(uds.devtype!=8)
     {
    usb_dev_status_1(DEV_PLUG);    
   }
  }
  else                     //u 盘 不存在
  {
   if(uds.devtype!=0)
     {
      UMountUSB(); //卸载U盘
    usb_dev_status_1(DEV_REMOVE);
   }
  }
  usleep(1000*1000);
 }
}
#endif

//====================提示U盘插入==============================//
#if 0
#define UEVENT_BUFFER_SIZE 2048
static int init_hotplug_sock(void);

void task_usb(void)
{
 char add[10]="add@";
 char remove[10]="remove@";
 char count=0;
 int hotplug_sock = init_hotplug_sock();
 
 while(0)
 {
  char buf[UEVENT_BUFFER_SIZE*2] = {0};
  recv(hotplug_sock, &buf, sizeof(buf), 0);
  printf("%s\n", buf);
  
  if(strstr(buf,add)==NULL)         count++;
  else if(strstr(buf,remove)==NULL) count++;
  
  if(count == 11)
  {
   beginbeep();      
   OSTimeDly(10); 
   stopbeep();
   count = 0;
  }
  usleep(100000);
 }
}


static int init_hotplug_sock(void)
{
 struct sockaddr_nl snl;
 const int buffersize = 16 * 1024 * 1024;
 int retval;

 memset(&snl, 0x00, sizeof(struct sockaddr_nl));
 snl.nl_family = AF_NETLINK;
 snl.nl_pid = getpid();
 snl.nl_groups = 1;
 int hotplug_sock = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT);

 if (hotplug_sock == -1) {
  printf("error getting socket: %s", strerror(errno));
  return -1;
 }

 /* set receive buffersize */
 setsockopt(hotplug_sock, SOL_SOCKET, SO_RCVBUFFORCE, &buffersize, sizeof(buffersize));
 retval = bind(hotplug_sock, (struct sockaddr *) &snl, sizeof(struct sockaddr_nl));

 if (retval < 0) {
  printf("bind failed: %s", strerror(errno));
  close(hotplug_sock);
  hotplug_sock = -1;
  return -1;
 }

 return hotplug_sock;
}
#endif
//-==================================================//

void *Task_USB(void *Id)
{
// OSTimeDly(2000000);
// Uart_Printf("Task_USB Started...\r\n");

// UMountUSB();  // -一开机就挂载一次
// flag_upgrade = MountUsb(); // 1成功 0失败
// if(flag_upgrade==1)flag_usb = 1;
 
// task_usb(); 
}

 

 

#if 0 //yuan

#include "includes.h"
#include <sys/mount.h>
#include <errno.h>
#include "recorder.h"
#include "Define.h" // add by xie


#define  Uart_Printf printf  //  add  by  xie
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif

#define BUFFER_SIZE 1024

//add  ------------
int flag_upgrade = 0;// add by xie 升级标志

#define DEV_PLUG   0x1010001
#define DEV_REMOVE  0x1000003
#define DEV_KEEP  0x1030000

TUDS  uds={0,0,0,0,0};

extern int MessageBox(const char *title, int x, int y, int w, int h, int s, int delay);
extern MENUATTR ma_upgrade;
extern int ShowScreenMenu(); //yuan
extern const char *strNoUSBDevice[3][LANGUAGE_NUM];


// end add ----------

 

//查看文件或文件夹是否存在
//返回值:TRUE:存在,FALSE:不存在
BOOL isFileExist(const char *FileName)
{
 if(FileName == NULL )return FALSE;
 if(access(FileName,F_OK)==0)  // access(filename, 0) == 0 //存在返0否返-1
 {
//  printf(" %s is exist \n ",FileName);
  return TRUE;
 }
 return FALSE;
}

//新建一文件夹
int CreateFolder(const char *directory)
{
 char dire[50];
 memset(dire,0x0,sizeof(dire));
 strcpy(dire,directory);
 if(mkdir(dire,0777)==-1)
 {
//  printf("Couldn't create the directory: %s\n",dire);
  return -1;
 }
// printf("Create dir : %s\n",dire);
 return 0;
}


int UMountUSB()
{
 int flg = 0;
 int um =  umount(UPDATA_DIR1); // umount("/media/usb-sda1");
    if(um == 0)
    {
  flg+=1;
  printf(" um  %s success \n",UPDATA_DIR1);
 }
 
 int rm = rmdir(UPDATA_DIR1); // 将 新建的目录删除 只能删除非空的目录
 if(rm == 0)
 {
  flg+=1;
 }
 return flg;
}

int MountUsb()
{
 char uname[28][28]={"/dev/sda","/dev/sda1","/dev/sdb","/dev/sdb1","/dev/sdc","/dev/sdd","/dev/sde","/dev/sdf","/dev/sdg","/dev/sdh","/dev/sdi","/dev/sdj","/dev/sdk","/dev/sdl","/dev/sdm","/dev/sdn",
        "/dev/sdo","/dev/sdp","/dev/sdq","/dev/sdr","/dev/sds","/dev/sdt","/dev/sdu","/dev/sdv","/dev/sdw","/dev/sdx","/dev/sdy","/dev/sdz"};

 int i=0,result=0,flag=1;
 
 if(isFileExist(UPDATA_DIR1) != 1)
    {
     CreateFolder(UPDATA_DIR1);
    }
 
    for(i=0;i<28;i++)           
    {
        result = mount(uname[i],"/media/usb-sda1","vfat",0,0); // "FAT"

  if(0 == result) // 挂载成功
        {
         if(isFileExist(UPDATA_DIR0) != 1) // U盘中没有ECGDAT这个文件夹则创建一个
         {
          CreateFolder(UPDATA_DIR0);
         }
   printf("  mount  %s is successful \n",uname[i]);
   flag=0;
            break;
        }
    }
    if(flag)                       // 卸载  没有U盘插上
    {
  int flg = UMountUSB();
  if(flg == 2)
  {
   printf(" um dir %s success \n",UPDATA_DIR1);
  }
        return -1;
    }
    return 0;
}

int CopyFile(char *from,char *to)
{
   int from_fd,to_fd;
   int BytesRead,BytesWrite;
   char buffer[BUFFER_SIZE];
   char *ptr;
   int err=0;
 //printu("COPY ::%s To %s\n",from,to);
   /* 打开源文件 */
   if((from_fd=open(from,O_RDONLY))==-1)   /*open file readonly,返回-1表示出错,否则返回文件描述符*/
   {
     //printu(stderr,"Open %s Error:%s\n",from,strerror(errno));
     //exit(1);
  return -1;
   }
   /* 创建目的文件 */
   /* 使用了O_CREAT选项-创建文件,open()函数需要第3个参数,
      mode=S_IRUSR|S_IWUSR表示S_IRUSR 用户可以读 S_IWUSR 用户可以写*/
   if((to_fd=open(to,O_WRONLY|O_CREAT|O_TRUNC,0777))==-1)
   {
        //printu(stderr,"Open %s Error:%s\n",to,strerror(errno));
        //exit(1);
        close(from_fd);
        return -1;
   }
   /* 以下代码是一个经典的拷贝文件的代码 */
   while(BytesRead=read(from_fd,buffer,BUFFER_SIZE))
   {
     /* 一个致命的错误发生了 */
     if((BytesRead==-1)&&(errno!=EINTR))
     {
   err=-1;
         break;
     }
     else if(BytesRead>0)
     {
       ptr=buffer;
       while(BytesWrite=write(to_fd,ptr,BytesRead))
       {
            /* 一个致命错误发生了 */
            if((BytesWrite==-1)&&(errno!=EINTR))
            {
     err=-1;
                break;
            }
            /* 写完了所有读的字节 */
            else if(BytesWrite==BytesRead)
            {
     err=0;
                break;
            }
            /* 只写了一部分,继续写 */
            else if(BytesWrite>0)
            {
                ptr+=BytesWrite;
                BytesRead-=BytesWrite;
            }
       }
      
       /* 写的时候发生的致命错误 */
       if(BytesWrite==-1)
       {
     err=-1;
           break;
       }
     }
   }
   close(from_fd);
   close(to_fd);
   sync();

   return err;
}

int ifUpgrade()  // 检测是否有U盘插入
{
 if(!isFileExist(UPDATA_DIR0))  // 文件名 yuan /media/usb-sda1/COMENSOFT/updata //不 存在则挂在
 {
  flag_upgrade = 0; // U盘不在
     int flgg_mount = MountUsb();  // 如果挂载成功则会有/media/usb-sda1文件夹
  if(flgg_mount == 0)
  {
   printf(" mount is success \n");
  }
 }

 if(isFileExist(UPDATA_DIR0))
 {
  flag_upgrade =1; // U盘存在则标为1
 }


 // 检查升级文件是否在 UPDATA_DIR2
 if( ma_upgrade.d == 1 ) // 开始升级
 {
  ma_upgrade.d  = g_Cfg.upgrade = 0; // 将其设为关闭

  if(flag_upgrade != 1) // U盘不在显示一个消息
  {
   printf("     U  not exist----    \n     ");
   usleep(1000*100);
   
   MessageBox((const char *)strNoUSBDevice[0][LANGUAGE_CUR],10,40,300,180,0,100);
  }
  else if(flag_upgrade == 1) // U盘在
  {
   printf("     U exist    \n     ");
   if(0 == isFileExist(UPDATA_DIR2"updata")) // 查看是否有升级文件
   {
    printf(" can not find update file\n  ");
    MessageBox((const char *)strNoUSBDevice[3][LANGUAGE_CUR],10,40,300,180,0,100);
   }
   else
   { 
//    printf("  find update file  1 \n  ");
    pid_t pid;
    
    if(0 == CopyFile((char *)UPDATA_DIR2"updata", (char *)"/tmp/updata"))// copy success
    {
//     printf("  find update file  2\n  ");

     chmod("/tmp/updata",0755);
     pid=fork();
     if(pid<0)
     {
      perror("error in fork!");
     }
     else  // pid success
     {
      if(pid==0)
      {
       sleep(2); 
       printf("executed updata\n");


       if(execl("/tmp/updata", "updata", "executed by Main", NULL)<0)
       {
        perror("Error on execl /tmp/updata");
       }

       
       printf("executed updata fail\n");
       exit(0);
      }
      else
      {
       printf("exit Main\n");
      
       //在此做程序退出处理
       exit(0);
      }
     }
    }
   } 
  }

  ShowScreenMenu();
  ShowScreenMenu();
 }

 if(flag_upgrade == 1)
 {
  return 1; // 有U盘
 }
 else
 {
  return 0;  // 无U盘
 }
 

}

void usb_dev_status_1(int flag)
{
   switch(flag)//扫描usb hub上port状态
   {
    case DEV_PLUG://usb设备接入 
                     uds.devtype=8;
                     uds.ready=1;
                            
                        beginbeep();      
                       OSTimeDly(10); 
                       stopbeep(); 

      
      break;
            
    case DEV_REMOVE://usb设备移除
   
      uds.devnum=0;
      uds.ifnum=0; 
        uds.devtype=0;
          uds.ready=0;
          uds.inuse=0;
          
            beginbeep();      
      OSTimeDly(10); 
      stopbeep();
  
        break;
    case DEV_KEEP://接入状态
        break;
       default:
           uds.devtype=0;
          uds.ready=0;
        break;
   } 
}

void task_usb(void)

 while(1)   // 这个循环可以执行
 {
  if(ifUpgrade() == 1 )   //u 盘存在
  {
   if(uds.devtype!=8)
     {
    usb_dev_status_1(DEV_PLUG);    
   }
  }
  else                     //u 盘 不存在
  {
   if(uds.devtype!=0)
     {
    usb_dev_status_1(DEV_REMOVE);
   }
  }
  usleep(1000*1000);
 }
}

void *Task_USB(void *Id)
{
 OSTimeDly(2000);
 Uart_Printf("Task_USB Started...\r\n");
 task_usb();  // yuan zai  hostusb.cpp
}

#endif

 

/**************************************************************************/
/* 文件名:Task_FTP.cpp                */
/* 作者:  梁坚                   */
/* 版本号:1.1                 */
/* 修改日期:2009-08-11               */
/* 文件描述:实现胎监仪 FTP - SERVER 功能            */
/**************************************************************************/

#include "includes.h"
#include <errno.h>

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <sys/un.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <linux/types.h>
#include <linux/netlink.h>
#include <errno.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netinet/in.h>


#define UEVENT_BUFFER_SIZE 2048
extern int my_system(char* cmd) ;  // 解决内存不足造成的死机
extern int flag_upgrade ;
extern int UMountUSB();
extern int MountUsb();

 

int hotplug_sock;
char count=0,flag_usb=0;

static int init_hotplug_sock(void)
{
 struct sockaddr_nl snl;
 const int buffersize = 16 * 1024 * 1024;
 int retval;

 memset(&snl, 0x00, sizeof(struct sockaddr_nl));
 snl.nl_family = AF_NETLINK;
 snl.nl_pid = getpid();
 snl.nl_groups = 1;
 int hotplug_sock = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT);

 if (hotplug_sock == -1) {
  printf("error getting socket: %s", strerror(errno));
  return -1;
 }

 /* set receive buffersize */
 setsockopt(hotplug_sock, SOL_SOCKET, SO_RCVBUFFORCE, &buffersize, sizeof(buffersize));
 retval = bind(hotplug_sock, (struct sockaddr *) &snl, sizeof(struct sockaddr_nl));

 if (retval < 0) {
  printf("bind failed: %s", strerror(errno));
  close(hotplug_sock);
  hotplug_sock = -1;
  return -1;
 }

 return hotplug_sock;
}


/*  函数说明:    从内核读取数据检测 U盘 是否插入   */
void check_usb(void)
{
 char buf[UEVENT_BUFFER_SIZE*2] = {0};
 recv(hotplug_sock, &buf, sizeof(buf), 0);
 char  umunt=1;
  
 if(strstr(buf,"add@")==NULL)         count++;
 else if(strstr(buf,"remove@")==NULL) count++;
 
  
 if(count == 11)
 {
  flag_usb=!flag_usb;

  if(flag_usb)
  {
//   sleep(1);
   OSTimeDly(1000000);//1s
   UMountUSB();
   flag_upgrade = MountUsb(); // 1成功 0失败
  }
  else
  {
//   sleep(1);
   OSTimeDly(1000000);//1s
   UMountUSB();// 卸载0成功 1失败
   flag_upgrade = 0;
  }

  beginbeep();      
  OSTimeDly(10); 
  stopbeep();

  printf("flag_upgrade = %d ,umunt 0success = %d,flag_usb = %d\n", flag_upgrade,umunt,flag_usb);
  
  count = 0;
 }
}


FTP任务///
void *Task_FTP(void *Id)
{
    printf("Task_FTP USB Started...3\r"); 
 int diag = 0,flag_ftp = -1,count=0;//diag 0为关 1时为开   flag_ftp 为0时则执行成功
 
 hotplug_sock = init_hotplug_sock();

 OSTimeDly(2000000);

 UMountUSB();  // -一开机就挂载一次
 flag_upgrade = MountUsb(); // 1成功 0失败
 if(flag_upgrade==1)flag_usb = 1;
 
 for(;;)
 {
   if(g_Cfg.ftp_func)
   {
    if(diag == 0)  // ftp 是关闭的
    { 
     flag_ftp = my_system("/usr/cmlib/vs.sh start");
   }

   if(diag != 1)
   {
    if(flag_ftp == 0 )// 开启成功
    {
     diag = 1;
     printf(" open ftp service success\n ");
     count = 0;
    }
    else if(flag_ftp != 0)
    {
     diag = 0;  
     printf(" open ftp service failed\n ");
    }
   }

   }
   else if(g_Cfg.ftp_func == 0)
   {
    if(diag == 1)// ftp 是打开
    {
    flag_ftp = my_system("/usr/cmlib/vs.sh stop");
    }

   if(diag != 0)
   {
    if(flag_ftp == 0)// 关闭成功
    {
     diag = 0;
     printf(" close ftp service success \n ");
     count = 0;
    }
    else if(flag_ftp != 0)
    {
     diag = 1;     
     printf(" close ftp service failed\n ");
    }
   }
   }

   check_usb();
  
   usleep(1000*100);
 }
}

 

 


#if 0 //yuan
/**************************************************************************/
/* 文件名:Task_FTP.cpp                */
/* 作者:  梁坚                   */
/* 版本号:1.1                 */
/* 修改日期:2009-08-11               */
/* 文件描述:实现胎监仪 FTP - SERVER 功能            */
/**************************************************************************/

#include "includes.h"
#include <errno.h>

extern int my_system(char* cmd) ;  // 解决内存不足造成的死机

FTP任务///
void *Task_FTP(void *Id)
{
    printf("Task_FTP Started...3\r"); 
 int diag = 0,flag_ftp = -1,count=0;//diag 0为关 1时为开   flag_ftp 为0时则执行成功

 for(;;)
 {
   if(g_Cfg.ftp_func)
   {
    if(diag == 0)  // ftp 是关闭的
    { 
     flag_ftp = my_system("/usr/cmlib/vs.sh start");
   }

   if(diag != 1)
   {
    if(flag_ftp == 0 )// 开启成功
    {
     diag = 1;
     printf(" open ftp service success\n ");
     count = 0;
    }
    else if(flag_ftp != 0)
    {
     diag = 0;  
     printf(" open ftp service failed\n ");
    }
   }

   }
   else if(g_Cfg.ftp_func == 0)
   {
    if(diag == 1)// ftp 是打开
    {
    flag_ftp = my_system("/usr/cmlib/vs.sh stop");
    }

   if(diag != 0)
   {
    if(flag_ftp == 0)// 关闭成功
    {
     diag = 0;
     printf(" close ftp service success \n ");
     count = 0;
    }
    else if(flag_ftp != 0)
    {
     diag = 1;     
     printf(" close ftp service failed\n ");
    }
   }
   }
  
   usleep(1000*1000);
 }
}
#endif


 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值