示例#1
0
void flash_eraseBlocks(unsigned long addr, unsigned long size)
{
	unsigned long i;
	
	if(addr==0 && size==131072)
	{
		size=8192;
	}
		
	for (i=0;i<size;i+=8192)
	{
		flash_command(0x80);
		
		SET_ADDR(0x555);
		SET_DATA(0xaa);
		flash_toggleWrite();

		SET_ADDR(0x2aa);
		SET_DATA(0x55);
		flash_toggleWrite();

		SET_ADDR(addr+i);
		SET_DATA(0x30);
		flash_toggleWrite();
	
		while(flash_getData()!=0xff);
	}
}
示例#2
0
static void flash_command(unsigned char cmd)
{
	SET_ADDR(0x555);
	SET_DATA(0xaa);
	flash_toggleWrite();

	SET_ADDR(0x2aa);
	SET_DATA(0x55);
	flash_toggleWrite();

	SET_ADDR(0x555);
	SET_DATA(cmd);
	flash_toggleWrite();
}
示例#3
0
static void
i2c_nack()
{
  MAKE_DATA_OUTPUT();
  SET_DATA();
  pulse_clock();
}
示例#4
0
文件: pdb_pgsql.c 项目: hajuuk/R7000
static NTSTATUS pgsqlsam_select_by_field ( struct pdb_methods *methods, SAM_ACCOUNT *user, enum sql_search_field field, const char *sname )
{
  struct pdb_pgsql_data *data ;
  
  char *esc ;
  char *query ;
  
  PGresult *result ;
  NTSTATUS retval ;

  SET_DATA(data, methods);

  if ( user == NULL )
  {
    DEBUG( 0, ("pdb_getsampwnam: SAM_ACCOUNT is NULL.\n") ) ;
    return NT_STATUS_INVALID_PARAMETER;
  }
  
  DEBUG( 5, ("pgsqlsam_select_by_field: getting data where %d = %s(nonescaped)\n", field, sname) ) ;
  
  /* Escape sname */
  esc = malloc(strlen(sname) * 2 + 1);
  if ( !esc )
  {
    DEBUG(0, ("Can't allocate memory to store escaped name\n"));
    return NT_STATUS_NO_MEMORY; 
  }
  
  //tmp_sname = smb_xstrdup(sname);
  PQescapeString( esc, sname, strlen(sname) ) ;
  
  query = sql_account_query_select(data->location, True, field, esc);
  
  /* Do it */
  DEBUG( 5, ("Executing query %s\n", query) ) ;
  result = PQexec( data->handle, query ) ;
  
  /* Result? */
  if ( result == NULL )
  {
    DEBUG( 0, ("Error executing %s, %s\n", query, PQerrorMessage( data->handle ) ) ) ;
    retval = NT_STATUS_UNSUCCESSFUL ;
  }
  else if ( PQresultStatus( result ) != PGRES_TUPLES_OK )
  {
    DEBUG( 0, ("Error executing %s, %s\n", query, PQresultErrorMessage( result ) ) ) ;
    retval = NT_STATUS_UNSUCCESSFUL ;
  }
  else
  {
    retval = row_to_sam_account( result, 0, user ) ;
  }
  
  SAFE_FREE( esc   ) ;
  SAFE_FREE( query ) ;
  
  PQclear( result ) ;
  
  return retval ;
}
示例#5
0
文件: pdb_pgsql.c 项目: hajuuk/R7000
static NTSTATUS pgsqlsam_setsampwent(struct pdb_methods *methods, BOOL update, uint16 acb_mask)
{
  struct pdb_pgsql_data *data ;
  char *query ;
  NTSTATUS retval ;
  
  SET_DATA( data, methods ) ;
  
  query = sql_account_query_select(data->location, update, SQL_SEARCH_NONE, NULL);
  
  /* Do it */
  DEBUG( 5, ("Executing query %s\n", query) ) ;
  data->pwent  = PQexec( data->handle, query ) ;
  data->currow = 0 ;
  
  /* Result? */
  if ( data->pwent == NULL )
  {
    DEBUG( 0, ("Error executing %s, %s\n", query, PQerrorMessage( data->handle ) ) ) ;
    retval = NT_STATUS_UNSUCCESSFUL ;
  }
  else if ( PQresultStatus( data->pwent ) != PGRES_TUPLES_OK )
  {
    DEBUG( 0, ("Error executing %s, %s\n", query, PQresultErrorMessage( data->pwent ) ) ) ;
    retval = NT_STATUS_UNSUCCESSFUL ;
  }
  else
  {
    DEBUG( 5, ("pgsqlsam_setsampwent succeeded(%d results)!\n", PQntuples(data->pwent)) ) ;
    retval = NT_STATUS_OK ;
  }
  
  SAFE_FREE(query);
  return retval ;
}
示例#6
0
void
i2c_init()
{
  SET_CLOCK();
  SET_DATA();
  MAKE_CLOCK_OUTPUT();
  MAKE_DATA_OUTPUT();
}
示例#7
0
/* Creates sam account in the first backend */
static NTSTATUS multisam_add_sam_account(struct pdb_methods *methods, struct samu * newpwd)
{
	struct multisam_data *data;
	
	SET_DATA(data, methods);
	
	DEBUG(0, ("Creating sam account in first multisam backend\n"));
	return data->methods[0]->add_sam_account(data->methods[0], newpwd);
}
示例#8
0
inline void sc2004_ReturnHome(void)
{	
	SET_DDR_DATA_OUT;
	
	SET_RS(0);
	SET_RW(0);
	SET_DATA(1<<DB1);
	
	sc2004_PulseEnable();
}
//---------结束信号-------------------
void panel_tm1635_stop(void)
{
    CLR_CLOCK();//clk = 0;
    Tm1635_DelayNTimes(2);
    CLR_DATA();//dio = 0;
    Tm1635_DelayNTimes(2);
    SET_CLOCK();//clk = 1;
    Tm1635_DelayNTimes(3);
    SET_DATA();//dio = 1;
}
示例#10
0
void flash_programByte(unsigned long addr, unsigned char byte)
{
	flash_command(0xa0);
	
	SET_ADDR(addr);
	SET_DATA(byte);
	flash_toggleWrite();

	while(flash_getData()!=byte);
}
示例#11
0
static void
i2c_end()
{
  MAKE_DATA_OUTPUT();
  CLEAR_DATA();
  i2c_delay_us(100);
  SET_CLOCK();
  i2c_delay_us(100);
  SET_DATA();
}
示例#12
0
inline void sc2004_ClearDisplay(void)
{
	SET_DDR_DATA_OUT;
	
	SET_RS(0);
	SET_RW(0);
	SET_DATA(1<<DB0);
	
	sc2004_PulseEnable();
}
示例#13
0
char TOS_COMMAND(I2C_init)(){
	printf("i2c_init\n");
	SET_CLOCK();
	SET_DATA();
	MAKE_CLOCK_OUTPUT();
	MAKE_DATA_OUTPUT();
	VAR(state) = 0;
	VAR(data) = 0;
	return 1;
}
示例#14
0
文件: pdb_pgsql.c 项目: hajuuk/R7000
static NTSTATUS pgsqlsam_delete_sam_account( struct pdb_methods *methods, SAM_ACCOUNT *sam_pass )
{
  struct pdb_pgsql_data *data ;
  
  const char *sname = pdb_get_username( sam_pass ) ;
  char *esc ;
  char *query ;
  
  PGresult *result ;
  NTSTATUS retval ;
  
  SET_DATA(data, methods);
  
  if ( !sname )
  {
    DEBUG( 0, ("invalid name specified\n") ) ;
    return NT_STATUS_INVALID_PARAMETER ;
  }
  
  /* Escape sname */
  esc = malloc(strlen(sname) * 2 + 1);
  if ( !esc )
  {
    DEBUG(0, ("Can't allocate memory to store escaped name\n"));
    return NT_STATUS_NO_MEMORY;
  }
  
  PQescapeString( esc, sname, strlen(sname) ) ;
  
  query = sql_account_query_delete(data->location, esc);
  
  /* Do it */
  result = PQexec( data->handle, query ) ;
  
  if ( result == NULL )
  {
    DEBUG( 0, ("Error executing %s, %s\n", query, PQerrorMessage( data->handle ) ) ) ;
    retval = NT_STATUS_UNSUCCESSFUL ;
  }
  else if ( PQresultStatus( result ) != PGRES_COMMAND_OK )
  {
    DEBUG( 0, ("Error executing %s, %s\n", query, PQresultErrorMessage( result ) ) ) ;
    retval = NT_STATUS_UNSUCCESSFUL ;
  }
  else
  {
    DEBUG( 5, ("User '%s' deleted\n", sname) ) ;
    retval = NT_STATUS_OK ;
  }
  
  SAFE_FREE( esc ) ;
  SAFE_FREE( query ) ;
  
  return retval ;
}
void panel_tm1635_start(void)
{
    SET_CLOCK();
	//clk = 1;	//给芯片发送开始信号
    SET_DATA();//dio = 1;
    Tm1635_DelayNTimes(2);
    CLR_DATA();//dio = 0;
    Tm1635_DelayNTimes(2);
    CLR_CLOCK();//clk = 0;	//开始信号传送完
    Tm1635_DelayNTimes(1);
} 
示例#16
0
文件: pdb_pgsql.c 项目: hajuuk/R7000
static NTSTATUS pgsqlsam_getsampwsid ( struct pdb_methods *methods, SAM_ACCOUNT *user, const DOM_SID *sid )
{
  struct pdb_pgsql_data *data;
  fstring sid_str;
  
  SET_DATA( data, methods ) ;
  
  sid_to_string( sid_str, sid ) ;
  
  return pgsqlsam_select_by_field( methods, user, SQL_SEARCH_USER_SID, sid_str ) ;
}
示例#17
0
inline void sc2004_WriteData(uint8_t data)
{
	SET_DDR_DATA_OUT;
	
	SET_RS(1);
	SET_RW(0);
	
	SET_DATA(data);
	sc2004_PulseEnable();
	
}
示例#18
0
static void
i2c_start()
{
  SET_DATA();
  SET_CLOCK();
  MAKE_DATA_OUTPUT();
  i2c_delay_us(100);
  CLEAR_DATA();
  i2c_delay_us(100);
  CLEAR_CLOCK();
}
示例#19
0
inline void sc2004_SetAddr_DDRAM(uint8_t addr)
{
	SET_DDR_DATA_OUT;
	
	SET_RS(0);
	SET_RW(0);
	SET_DATA( (1 << DB7)
			| (addr & 0b01111111)
			);
			
	sc2004_PulseEnable();
}
示例#20
0
文件: display.c 项目: Jacob1988/b3603
inline void display_word(uint16_t word)
{
	uint8_t i;

	for (i = 0; i < 16; i++) {
		uint8_t bit = word & 1;
		word >>= 1;
		SET_DATA(bit);
		PULSE_CLOCK();
	}
	SAVE_DATA();
}
void panel_tm1635_write(uint8_t wr_data)
{
	unsigned int i;

	//GXPIO_Data_t whether_key;
	
	panel_tm1635_set_portout(g_PanelTM1635Config.m_chDataPin);

	for(i=0;i<8;i++)//开始传送8位数据,每循环一次传送一位数据
	{
		CLR_CLOCK();//clk =0;
		Tm1635_DelayNTimes(2);
		if((wr_data & 0x1))
		{
			SET_DATA();
		}
		else
		{
			CLR_DATA();
		}
		wr_data >>= 1;//移位数据,低位在前!
		Tm1635_DelayNTimes(3);
		SET_CLOCK();//clk =1;
		Tm1635_DelayNTimes(2);
	}  
			 //8位数据传送完1
	CLR_CLOCK();//clk = 0;//判断芯片发过来的ACK应答信号
	Tm1635_DelayNTimes(2);
	SET_DATA();//dio = 1;
	Tm1635_DelayNTimes(2);
	SET_CLOCK();//clk = 1;
	Tm1635_DelayNTimes(2);

	panel_tm1635_set_portin(g_PanelTM1635Config.m_chDataPin);
	Tm1635_DelayNTimes(2);
	Tm1635_DelayNTimes(2);
	panel_tm1635_set_portout(g_PanelTM1635Config.m_chDataPin);
	Tm1635_DelayNTimes(2);
}
示例#22
0
inline void sc2004_EntryMode(uint8_t increment_direction, uint8_t display_shift)
{	
	SET_DDR_DATA_OUT;
	
	SET_RS(0);
	SET_RW(0);
	SET_DATA( (1<<DB2)
			| (increment_direction<<DB1)
			| (display_shift<<DB0)
			);

	sc2004_PulseEnable();
} 
示例#23
0
inline void sc2004_CursorDisplayShift(uint8_t shift_display_or_cursor, uint8_t direction_right)
{
	SET_DDR_DATA_OUT;
	
	SET_RS(0);
	SET_RW(0);
	SET_DATA( (1<<DB4)
			| (shift_display_or_cursor<<DB3)
			| (direction_right<<DB2)
			);
	
	sc2004_PulseEnable();
}	
示例#24
0
inline void sc2004_DisplayMode(uint8_t display, uint8_t cursor, uint8_t cur_blink)
{
	SET_DDR_DATA_OUT;
	
	SET_RS(0);
	SET_RW(0);
	SET_DATA( (1<<DB3)
			| (display<<DB2)
			| (cursor <<DB1)
			| (cur_blink<<DB0)
			);
	
	sc2004_PulseEnable();
}
示例#25
0
文件: pdb_pgsql.c 项目: hajuuk/R7000
static NTSTATUS pgsqlsam_getsampwnam ( struct pdb_methods *methods, SAM_ACCOUNT *user, const char *sname )
{
  struct pdb_pgsql_data *data;
  
  SET_DATA(data, methods);
  
  if ( !sname )
  {
    DEBUG( 0, ("invalid name specified") ) ;
    return NT_STATUS_INVALID_PARAMETER;
  }
  
  return pgsqlsam_select_by_field( methods, user, SQL_SEARCH_USER_NAME, sname ) ;
}
示例#26
0
inline void sc2004_FunctionSet(uint8_t length_is_8bit, uint8_t double_line, uint8_t wide_font)
{
	SET_DDR_DATA_OUT;
	
	SET_RS(0);
	SET_RW(0);
	SET_DATA( (1<<DB5)
			| (length_is_8bit<<DB4)
			| (double_line << DB3)
			| (wide_font << DB2)
			);
	
	sc2004_PulseEnable();
}
示例#27
0
void i2c_end(){
	MAKE_DATA_OUTPUT();
	CLEAR_DATA();
	wait();
	wait();
	wait();
	wait();
	SET_CLOCK();
	wait();
	wait();
	wait();
	wait();
	SET_DATA();
	printf(" i2c_end\n");
}
示例#28
0
inline void sc2004_setPort(sc2004_port * rec)
{
	
	sbi(*rec->pddr_rs, rec->portno_rs); //init port direction
	sbi(*rec->pddr_rw, rec->portno_rw);
	sbi(*rec->pddr_enable, rec->portno_enable);
	
	SET_DDR_DATA_OUT;
	SET_RS(0);
	//SET_RW(0);
	SET_DATA(0);
	SET_ENABLE(0);
	
	pcurrent_port = rec;
}
示例#29
0
static NTSTATUS multisam_rename_sam_account (struct pdb_methods *methods, struct samu *pwd, const char *newname)
{
	short i;
	struct multisam_data *data;
	NTSTATUS ret;
	
	SET_DATA(data, methods);
	DEBUG(5, ("Renaming sam account.\n"));
	for (i = 0; i < data->num_backends; i++) {
		ret = data->methods[i]->rename_sam_account(data->methods[i], pwd, newname);
		if (NT_STATUS_IS_OK(ret)) {
			return ret;
		}
	}
	return NT_STATUS_UNSUCCESSFUL;
}
示例#30
0
/* Tries to delete the user from all backends, if one succeeds we're happy */ 
static NTSTATUS multisam_delete_sam_account(struct pdb_methods *methods,
							struct samu * sam_pass)
{
	short i;
	struct multisam_data *data;

	SET_DATA(data, methods);
	
	for (i = 0; i < data->num_backends; i++) {
		if (NT_STATUS_IS_OK(data->methods[i]->delete_sam_account(data->methods[i], sam_pass))) {
			return NT_STATUS_OK;
		}
	}
	DEBUG(1, ("Could not find SAM account in multisam backends\n"));
	return NT_STATUS_UNSUCCESSFUL;
}