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); } }
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(); }
static void i2c_nack() { MAKE_DATA_OUTPUT(); SET_DATA(); pulse_clock(); }
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 ; }
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 ; }
void i2c_init() { SET_CLOCK(); SET_DATA(); MAKE_CLOCK_OUTPUT(); MAKE_DATA_OUTPUT(); }
/* 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); }
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; }
void flash_programByte(unsigned long addr, unsigned char byte) { flash_command(0xa0); SET_ADDR(addr); SET_DATA(byte); flash_toggleWrite(); while(flash_getData()!=byte); }
static void i2c_end() { MAKE_DATA_OUTPUT(); CLEAR_DATA(); i2c_delay_us(100); SET_CLOCK(); i2c_delay_us(100); SET_DATA(); }
inline void sc2004_ClearDisplay(void) { SET_DDR_DATA_OUT; SET_RS(0); SET_RW(0); SET_DATA(1<<DB0); sc2004_PulseEnable(); }
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; }
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); }
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 ) ; }
inline void sc2004_WriteData(uint8_t data) { SET_DDR_DATA_OUT; SET_RS(1); SET_RW(0); SET_DATA(data); sc2004_PulseEnable(); }
static void i2c_start() { SET_DATA(); SET_CLOCK(); MAKE_DATA_OUTPUT(); i2c_delay_us(100); CLEAR_DATA(); i2c_delay_us(100); CLEAR_CLOCK(); }
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(); }
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); }
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(); }
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(); }
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(); }
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 ) ; }
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(); }
void i2c_end(){ MAKE_DATA_OUTPUT(); CLEAR_DATA(); wait(); wait(); wait(); wait(); SET_CLOCK(); wait(); wait(); wait(); wait(); SET_DATA(); printf(" i2c_end\n"); }
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; }
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; }
/* 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; }