Exemplo n.º 1
0
Arquivo: PlugCD.c Projeto: AlexBu/pcsx
long CDR__readTrack(unsigned char *time) {
//    SysPrintf("start CDR_readTrack()\r\n");
//    printf("readTrack at %02d:%02d:%02d\n", BCDToInt(time[0]), BCDToInt(time[1]), BCDToInt(time[2]));

    //	cdrom_reinit();

    seekSector(BCDToInt(time[0]), BCDToInt(time[1]), BCDToInt(time[2]));

//    SysPrintf("end CDR_readTrack()\r\n");
    return 0;
}
long CDR_readTrack(unsigned char *tr)
{
	int m = BCDToInt( tr[0] );
	int s = BCDToInt( tr[1] );
	int f = BCDToInt( tr[2] );
	
	s -= 2;
	if (s < 0) {
		s += secondsPerMinute;
		m --;
	}
//	printf("CDR_readTrack(%d:%02d:%02d); 0x%08x\n", m, s, f, m * bytesPerMinute + s * bytesPerSecond + f * bytesPerFrame);

	CDRseek(m, s, f);
	return 0;
}
Exemplo n.º 3
0
int PCF8583::GetSeconds(void)
{
/*    uint8_t bcdsecs = FetchReg(SecondsRegAddr);
    DigitalOut myled(LED4);
    myled = 1;

    uint8_t secs = BCDToInt(bcdsecs);
    wait(0.2);
    myled = 0;
    return secs; */
    return (BCDToInt(FetchReg(SecondsRegAddr)));
}
Exemplo n.º 4
0
		// sets this MSF time based on format.  format tells the order of the
		// frame, min and sec in the char* and whether or not it's integer or BCD
   inline void setMSF(const unsigned char* msf, const TDTNFormat format)
   {
      if (format == msfbcd)
      {
         minute = BCDToInt(msf[0]);
         sec = BCDToInt(msf[1]);
         frame = BCDToInt(msf[2]);
      }
      else if (format == msfint)
      {
         minute = msf[0];
         sec = msf[1];
         frame = msf[2];
      }
      else if (format == fsmbcd)
      {
         minute = BCDToInt(msf[2]);
         sec = BCDToInt(msf[1]);
         frame = BCDToInt(msf[0]);
      }
      else if (format == fsmint)
      {
         minute = msf[2];
         sec = msf[1];
         frame = msf[0];
      }
   }
Exemplo n.º 5
0
Arquivo: pet.c Projeto: mmaizi/PET
///定时线程,需要连接跳线
USER_FUNC void time_fdthread(void *arg)
{
	while(1)
	{
		///第一步:读时钟模块上的时间值
		hfuart_send(huart, query_time_cmd, sizeof(query_time_cmd), 0);
		msleep(500);
		if (hfuart_recv(huart, recv_timebuf, sizeof(recv_timebuf), 0) > 0)
		{
			memset(time_str, 0, sizeof(time_str));
			hour = BCDToInt(recv_timebuf[0]);			 ///将BCD码转成十进制的时
			min  = BCDToInt(recv_timebuf[1]);
			time_str[0] = (hour / 10) + 48;              ///数字到字符
			time_str[1] = (hour % 10) + 48;
			time_str[2] = ':';
			time_str[3] = (min / 10) + 48;
			time_str[4] = (min % 10) + 48;
			
			// sendto(udp_fd, time_str, sizeof(time_str), 0, (struct sockaddr *)&address, sizeof(address));
		}
		
		
		///第二步:取内存中设定的时间值与当前获取的时间值进行匹配
		///	 备注:每次都轮询完flash中所有的时间设置,标识1~4为喂食,标识5~8为喂水,这样set和cancel不用作修改
		memset(read_timed_flashbuf, 0, sizeof(read_timed_flashbuf));
		hfuflash_read(0, read_timed_flashbuf, sizeof(read_timed_flashbuf));
		
		if (read_timed_flashbuf[1] == ',')							///如果不空
		{
			///2.1 分割整个竖线连接的字符串read_timed_flashbuf数组
			p_timed_str = strtok(read_timed_flashbuf, "|");
			n_timed = 0;
			while(p_timed_str)
			{
				timed_flash_set_str[n_timed] = p_timed_str;
				n_timed++;
				p_timed_str = strtok(NULL, "|");
			}
			
			///2.2 匹配时间并喂食,将需要连接的字符串标识存入存储数组中
			k_timed = -1;
			memset(store_timed_flashbuf, 0, sizeof(store_timed_flashbuf));
			while(k_timed < (n_timed - 1))
			{
				k_timed++;
				memset(timed_cmpbuf, 0, sizeof(timed_cmpbuf));
				strcpy(timed_cmpbuf, timed_flash_set_str[k_timed]);				///timed_flash_set_str[0 -  (n_timed-1)]的格式为:1,08:30,1,3
				// u_printf("timed_cmpbuf is: %s\n", timed_cmpbuf);
				
				///以","分割timed_cmpbuf
				k_cmd = 0;
				p_cmd = strtok(timed_cmpbuf, ",");
				while(p_cmd)
				{
					everyTimeCmd[k_cmd] = p_cmd;
					k_cmd++;
					p_cmd = strtok(NULL, ",");
				}
				
				///取everyTimeCmd[1]中时间值与时钟模块time_str比较
				if (strcmp(time_str, everyTimeCmd[1]) == 0)
				{
					sendto(udp_fd, "Got it", sizeof("Got it"), 0, (struct sockaddr *)&address, sizeof(address));
					//注:此处添加定时喂食、喂水的判断
					
					control_feed[3]=(char)(atoi(everyTimeCmd[3]) * 5);
					hfuart_send(huart, control_feed, sizeof(control_feed), 0);
					if (strcmp(everyTimeCmd[2], "1") == 0)
					{
						continue;
					}
				}
				
				///连接字符串
				strcat(store_timed_flashbuf, timed_flash_set_str[k_timed]);
				strcat(store_timed_flashbuf, vertLine);
				
			}
			
			///写进flash中
			hfuflash_erase_page(0,1);
			hfuflash_write(0, store_timed_flashbuf, sizeof(store_timed_flashbuf));
			sendto(udp_fd, "Only pet(A496): ", sizeof("Only pet(A496): "), 0, (struct sockaddr *)&address, sizeof(address));
			sendto(udp_fd, store_timed_flashbuf, sizeof(store_timed_flashbuf), 0, (struct sockaddr *)&address, sizeof(address));
		}
		
		sleep(75);							///保证每分钟轮询一次
	}
}
Exemplo n.º 6
0
int PCF8583::GetHours(void)
{
    return (BCDToInt(0x3F & FetchReg(HoursRegAddr)));
}
Exemplo n.º 7
0
int PCF8583::GetMinuites(void)
{
    return (BCDToInt(FetchReg(MinuitesRegAddr)));
}