size_t i2c::command(uint8_t slaveaddr, uint8_t cmd, const uint8_t* data_addr, size_t data_size) { reset_txfer_done(); set_slave_address(slaveaddr); set_data_len(1 + data_size); initiate_write(); write_byte(cmd); size_t bytes_sent=1; while (data_size>0) { if (write_byte(*data_addr)) { data_addr++; data_size--; bytes_sent++; } // TODO check for error conditions } wait_for_done(); clear_fifo(); return bytes_sent; }
int main(int argc, char** argv) { if(argc != 2 && argc != 3){ fputs("pingtalk <host/ip>\n", stderr); fputs("pingtalk <host/ip> <data_size>\n", stderr); return 1; } if(argc >= 3) set_data_len(atoi(argv[2])); const char* hostname = argv[1]; PingTalk me(hostname, -1); me.main(); return 0; }
size_t i2c::query(uint8_t slaveaddr, uint8_t slave_register, uint8_t* buffer, size_t buffer_size) { enum { READ_MULTIPLE=0x080 }; command(slaveaddr, slave_register | READ_MULTIPLE); set_data_len(buffer_size); initiate_read(); size_t bytes_read=0; while (buffer_size > 0) { if (read_byte(*buffer)) { buffer_size--; bytes_read++; buffer++; } // TODO check for error conditions } clear_fifo(); return bytes_read; }
static int set_string(CComPtr<IMSAdminBase> pIMeta, METADATA_HANDLE MyHandle, TCHAR *path, int code, char *data) { return set_data_len(pIMeta, MyHandle, path, code, IIS_MD_UT_FILE, data, strlen(data) + 1); }
static int set_data(CComPtr<IMSAdminBase> pIMeta, METADATA_HANDLE MyHandle, TCHAR *path, int code, int type, char *data) { return set_data_len(pIMeta, MyHandle, path, code, type, data, strlen(data) + 1); }
bool PacketInputStream::receive_packet() { juint len, id; int bytes_avail; unsigned char uc; SETUP_ERROR_CHECKER_ARG; Transport::transport_op_def_t *ops = _transport_ops; bytes_avail = ops->peek_bytes(&_transport, &len, sizeof(len)); if (bytes_avail < sizeof(len)) { // Try later, not enough bytes to get the packet length return false; } len = JAVA_TO_HOST_INT(len); if (len < JDWP_HEADER_SIZE) { return false; } if (len > JDWP_HEADER_SIZE) { SAVE_CURRENT_EXCEPTION; _input_data = PacketStream::get_buffer(len - JDWP_HEADER_SIZE JVM_NO_CHECK); RESTORE_CURRENT_EXCEPTION; if (_input_data.is_null()) { // not enough memory for this packet buffer flush_and_send_oom(ops); return false; } } ops->read_int(&_transport, &len); len = JAVA_TO_HOST_INT(len); if (len < JDWP_HEADER_SIZE) { flush(ops); return false; } set_data_len(len - JDWP_HEADER_SIZE); ops->read_int(&_transport, &id); id = JAVA_TO_HOST_INT(id); set_id(id); ops->read_bytes(&_transport, &uc, sizeof(uc), true); set_flags(uc); if (flags() & FLAGS_REPLY) { short error_code; ops->read_short(&_transport, &error_code); error_code = JAVA_TO_HOST_SHORT(error_code); set_error(error_code); } else { ops->read_bytes(&_transport, &uc, sizeof(uc), true); set_cmd_set(uc); ops->read_bytes(&_transport, &uc, sizeof(uc), true); set_cmd(uc); } if (len > JDWP_HEADER_SIZE) { // read in the whole packet ops->read_bytes(&_transport, _input_data.base_address(), len - JDWP_HEADER_SIZE, true); } _output_index = 0; return true; }