#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