Code refactor and format.

This commit is contained in:
2020-10-31 02:28:50 +00:00
parent 00b30ece2e
commit fabe9f8b40
6 changed files with 151 additions and 198 deletions

View File

@@ -86,12 +86,8 @@ int32_t SendAtaChsCommand(void* device_ctx,
case AARUREMOTE_ATA_PROTOCOL_DMA: case AARUREMOTE_ATA_PROTOCOL_DMA:
case AARUREMOTE_ATA_PROTOCOL_DMA_QUEUED: case AARUREMOTE_ATA_PROTOCOL_DMA_QUEUED:
case AARUREMOTE_ATA_PROTOCOL_UDMA_IN: case AARUREMOTE_ATA_PROTOCOL_UDMA_IN:
case AARUREMOTE_ATA_PROTOCOL_UDMA_OUT: case AARUREMOTE_ATA_PROTOCOL_UDMA_OUT: camccb->ataio.cmd.flags |= CAM_ATAIO_DMA; break;
camccb->ataio.cmd.flags |= CAM_ATAIO_DMA; case AARUREMOTE_ATA_PROTOCOL_FPDMA: camccb->ataio.cmd.flags |= CAM_ATAIO_FPDMA; break;
break;
case AARUREMOTE_ATA_PROTOCOL_FPDMA:
camccb->ataio.cmd.flags |= CAM_ATAIO_FPDMA;
break;
} }
camccb->ataio.cmd.command = registers.command; camccb->ataio.cmd.command = registers.command;
@@ -106,8 +102,7 @@ int32_t SendAtaChsCommand(void* device_ctx,
error = cam_send_ccb(ctx->device, camccb); error = cam_send_ccb(ctx->device, camccb);
if(!clock_error) if(!clock_error) clock_error = clock_gettime(CLOCK_REALTIME_PRECISE, &end_tp);
clock_error = clock_gettime(CLOCK_REALTIME_PRECISE, &end_tp);
if(!clock_error) if(!clock_error)
{ {
@@ -119,8 +114,7 @@ int32_t SendAtaChsCommand(void* device_ctx,
*duration = (uint32_t)(end - start); *duration = (uint32_t)(end - start);
} }
if(error < 0) if(error < 0) error = errno;
error = errno;
if((camccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP && if((camccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP &&
(camccb->ccb_h.status & CAM_STATUS_MASK) != CAM_ATA_STATUS_ERROR) (camccb->ccb_h.status & CAM_STATUS_MASK) != CAM_ATA_STATUS_ERROR)
@@ -129,8 +123,7 @@ int32_t SendAtaChsCommand(void* device_ctx,
*sense = true; *sense = true;
} }
if((camccb->ccb_h.status & CAM_STATUS_MASK) == CAM_ATA_STATUS_ERROR) if((camccb->ccb_h.status & CAM_STATUS_MASK) == CAM_ATA_STATUS_ERROR) *sense = true;
*sense = true;
error_registers->cylinder_high = camccb->ataio.res.lba_high; error_registers->cylinder_high = camccb->ataio.res.lba_high;
error_registers->cylinder_low = camccb->ataio.res.lba_mid; error_registers->cylinder_low = camccb->ataio.res.lba_mid;
@@ -194,12 +187,8 @@ int32_t SendAtaLba28Command(void* device_ctx,
case AARUREMOTE_ATA_PROTOCOL_DMA: case AARUREMOTE_ATA_PROTOCOL_DMA:
case AARUREMOTE_ATA_PROTOCOL_DMA_QUEUED: case AARUREMOTE_ATA_PROTOCOL_DMA_QUEUED:
case AARUREMOTE_ATA_PROTOCOL_UDMA_IN: case AARUREMOTE_ATA_PROTOCOL_UDMA_IN:
case AARUREMOTE_ATA_PROTOCOL_UDMA_OUT: case AARUREMOTE_ATA_PROTOCOL_UDMA_OUT: camccb->ataio.cmd.flags |= CAM_ATAIO_DMA; break;
camccb->ataio.cmd.flags |= CAM_ATAIO_DMA; case AARUREMOTE_ATA_PROTOCOL_FPDMA: camccb->ataio.cmd.flags |= CAM_ATAIO_FPDMA; break;
break;
case AARUREMOTE_ATA_PROTOCOL_FPDMA:
camccb->ataio.cmd.flags |= CAM_ATAIO_FPDMA;
break;
} }
camccb->ataio.cmd.command = registers.command; camccb->ataio.cmd.command = registers.command;
@@ -214,8 +203,7 @@ int32_t SendAtaLba28Command(void* device_ctx,
error = cam_send_ccb(ctx->device, camccb); error = cam_send_ccb(ctx->device, camccb);
if(!clock_error) if(!clock_error) clock_error = clock_gettime(CLOCK_REALTIME_PRECISE, &end_tp);
clock_error = clock_gettime(CLOCK_REALTIME_PRECISE, &end_tp);
if(!clock_error) if(!clock_error)
{ {
@@ -227,8 +215,7 @@ int32_t SendAtaLba28Command(void* device_ctx,
*duration = (uint32_t)(end - start); *duration = (uint32_t)(end - start);
} }
if(error < 0) if(error < 0) error = errno;
error = errno;
if((camccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP && if((camccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP &&
(camccb->ccb_h.status & CAM_STATUS_MASK) != CAM_ATA_STATUS_ERROR) (camccb->ccb_h.status & CAM_STATUS_MASK) != CAM_ATA_STATUS_ERROR)
@@ -237,8 +224,7 @@ int32_t SendAtaLba28Command(void* device_ctx,
*sense = true; *sense = true;
} }
if((camccb->ccb_h.status & CAM_STATUS_MASK) == CAM_ATA_STATUS_ERROR) if((camccb->ccb_h.status & CAM_STATUS_MASK) == CAM_ATA_STATUS_ERROR) *sense = true;
*sense = true;
error_registers->lba_high = camccb->ataio.res.lba_high; error_registers->lba_high = camccb->ataio.res.lba_high;
error_registers->lba_mid = camccb->ataio.res.lba_mid; error_registers->lba_mid = camccb->ataio.res.lba_mid;
@@ -304,12 +290,8 @@ int32_t SendAtaLba48Command(void* device_ctx,
case AARUREMOTE_ATA_PROTOCOL_DMA: case AARUREMOTE_ATA_PROTOCOL_DMA:
case AARUREMOTE_ATA_PROTOCOL_DMA_QUEUED: case AARUREMOTE_ATA_PROTOCOL_DMA_QUEUED:
case AARUREMOTE_ATA_PROTOCOL_UDMA_IN: case AARUREMOTE_ATA_PROTOCOL_UDMA_IN:
case AARUREMOTE_ATA_PROTOCOL_UDMA_OUT: case AARUREMOTE_ATA_PROTOCOL_UDMA_OUT: camccb->ataio.cmd.flags |= CAM_ATAIO_DMA; break;
camccb->ataio.cmd.flags |= CAM_ATAIO_DMA; case AARUREMOTE_ATA_PROTOCOL_FPDMA: camccb->ataio.cmd.flags |= CAM_ATAIO_FPDMA; break;
break;
case AARUREMOTE_ATA_PROTOCOL_FPDMA:
camccb->ataio.cmd.flags |= CAM_ATAIO_FPDMA;
break;
} }
camccb->ataio.cmd.command = registers.command; camccb->ataio.cmd.command = registers.command;
@@ -329,8 +311,7 @@ int32_t SendAtaLba48Command(void* device_ctx,
error = cam_send_ccb(ctx->device, camccb); error = cam_send_ccb(ctx->device, camccb);
if(!clock_error) if(!clock_error) clock_error = clock_gettime(CLOCK_REALTIME_PRECISE, &end_tp);
clock_error = clock_gettime(CLOCK_REALTIME_PRECISE, &end_tp);
if(!clock_error) if(!clock_error)
{ {
@@ -342,8 +323,7 @@ int32_t SendAtaLba48Command(void* device_ctx,
*duration = (uint32_t)(end - start); *duration = (uint32_t)(end - start);
} }
if(error < 0) if(error < 0) error = errno;
error = errno;
if((camccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP && if((camccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP &&
(camccb->ccb_h.status & CAM_STATUS_MASK) != CAM_ATA_STATUS_ERROR) (camccb->ccb_h.status & CAM_STATUS_MASK) != CAM_ATA_STATUS_ERROR)
@@ -352,8 +332,7 @@ int32_t SendAtaLba48Command(void* device_ctx,
*sense = true; *sense = true;
} }
if((camccb->ccb_h.status & CAM_STATUS_MASK) == CAM_ATA_STATUS_ERROR) if((camccb->ccb_h.status & CAM_STATUS_MASK) == CAM_ATA_STATUS_ERROR) *sense = true;
*sense = true;
error_registers->lba_high = (camccb->ataio.res.lba_high_exp << 8) + camccb->ataio.res.lba_high; error_registers->lba_high = (camccb->ataio.res.lba_high_exp << 8) + camccb->ataio.res.lba_high;
error_registers->lba_mid = (camccb->ataio.res.lba_mid_exp << 8) + camccb->ataio.res.lba_mid; error_registers->lba_mid = (camccb->ataio.res.lba_mid_exp << 8) + camccb->ataio.res.lba_mid;

View File

@@ -64,8 +64,7 @@ void DeviceClose(void* device_ctx)
if(!ctx) return; if(!ctx) return;
if(ctx->device) if(ctx->device) cam_close_device(ctx->device);
cam_close_device(ctx->device);
close(ctx->fd); close(ctx->fd);
@@ -99,25 +98,15 @@ int32_t GetDeviceType(void* device_ctx)
switch(camccb->cgd.protocol) switch(camccb->cgd.protocol)
{ {
case PROTO_ATA: case PROTO_ATA:
case PROTO_SATAPM: case PROTO_SATAPM: device_type = AARUREMOTE_DEVICE_TYPE_ATA; break;
device_type = AARUREMOTE_DEVICE_TYPE_ATA; case PROTO_ATAPI: device_type = AARUREMOTE_DEVICE_TYPE_ATAPI; break;
break; case PROTO_SCSI: device_type = AARUREMOTE_DEVICE_TYPE_SCSI; break;
case PROTO_ATAPI: case PROTO_NVME: device_type = AARUREMOTE_DEVICE_TYPE_NVME; break;
device_type = AARUREMOTE_DEVICE_TYPE_ATAPI;
break;
case PROTO_SCSI:
device_type = AARUREMOTE_DEVICE_TYPE_SCSI;
break;
case PROTO_NVME:
device_type = AARUREMOTE_DEVICE_TYPE_NVME;
break;
case PROTO_MMCSD: case PROTO_MMCSD:
// TODO: MMC vs SD // TODO: MMC vs SD
device_type = AARUREMOTE_DEVICE_TYPE_MMC; device_type = AARUREMOTE_DEVICE_TYPE_MMC;
break; break;
default: default: device_type = AARUREMOTE_DEVICE_TYPE_UNKNOWN; break;
device_type = AARUREMOTE_DEVICE_TYPE_UNKNOWN;
break;
} }
cam_freeccb(camccb); cam_freeccb(camccb);

View File

@@ -19,8 +19,8 @@
#define AARUREMOTE_FREEBSD_FREEBSD_H_ #define AARUREMOTE_FREEBSD_FREEBSD_H_
// Included here as it seems to need to be after all others // Included here as it seems to need to be after all others
#include <stdio.h>
#include <camlib.h> #include <camlib.h>
#include <stdio.h>
typedef struct typedef struct
{ {

View File

@@ -111,16 +111,14 @@ DeviceInfoList* ListDevices()
strncpy(list_next->this.serial, (const char*)camccb->cgd.ident_data.serial, 20); strncpy(list_next->this.serial, (const char*)camccb->cgd.ident_data.serial, 20);
if(strncmp(camdev->sim_name, "ahcich", 6) == 0) if(strncmp(camdev->sim_name, "ahcich", 6) == 0) strncpy(list_next->this.bus, "SATA", 5);
strncpy(list_next->this.bus, "SATA", 5);
else else
strncpy(list_next->this.bus, "ATA", 4); strncpy(list_next->this.bus, "ATA", 4);
// TODO: This protocol didn't work in C#, does it work in C? // TODO: This protocol didn't work in C#, does it work in C?
list_next->this.supported = strncmp(camdev->sim_name, "ata", 3) != 0; list_next->this.supported = strncmp(camdev->sim_name, "ata", 3) != 0;
if(camccb->cgd.protocol == PROTO_ATAPI) if(camccb->cgd.protocol == PROTO_ATAPI) goto protocol_atapi;
goto protocol_atapi;
break; break;
case PROTO_SCSI: case PROTO_SCSI:
@@ -128,8 +126,7 @@ DeviceInfoList* ListDevices()
strncpy(list_next->this.vendor, camccb->cgd.inq_data.vendor, 8); strncpy(list_next->this.vendor, camccb->cgd.inq_data.vendor, 8);
strncpy(list_next->this.model, camccb->cgd.inq_data.product, 16); strncpy(list_next->this.model, camccb->cgd.inq_data.product, 16);
if(strncmp(camdev->sim_name, "ata", 3) == 0 || if(strncmp(camdev->sim_name, "ata", 3) == 0 || strncmp(camdev->sim_name, "ahcich", 6) == 0)
strncmp(camdev->sim_name, "ahcich", 6) == 0)
strncpy(list_next->this.bus, "ATAPI", 5); strncpy(list_next->this.bus, "ATAPI", 5);
else else
strncpy(list_next->this.bus, "SCSI", 4); strncpy(list_next->this.bus, "SCSI", 4);

View File

@@ -20,7 +20,4 @@
#include "../aaruremote.h" #include "../aaruremote.h"
#include "freebsd.h" #include "freebsd.h"
uint8_t GetPcmciaData(void* device_ctx, uint16_t* cis_len, char* cis) uint8_t GetPcmciaData(void* device_ctx, uint16_t* cis_len, char* cis) { return 0; }
{
return 0;
}

View File

@@ -51,18 +51,10 @@ int32_t SendScsiCommand(void* device_ctx,
switch(direction) switch(direction)
{ {
case AARUREMOTE_SCSI_DIRECTION_NONE: case AARUREMOTE_SCSI_DIRECTION_NONE: flags = CAM_DIR_NONE; break;
flags = CAM_DIR_NONE; case AARUREMOTE_SCSI_DIRECTION_OUT: flags = CAM_DIR_OUT; break;
break; case AARUREMOTE_SCSI_DIRECTION_IN: flags = CAM_DIR_IN; break;
case AARUREMOTE_SCSI_DIRECTION_OUT: case AARUREMOTE_SCSI_DIRECTION_INOUT: flags = CAM_DIR_BOTH; break;
flags = CAM_DIR_OUT;
break;
case AARUREMOTE_SCSI_DIRECTION_IN:
flags = CAM_DIR_IN;
break;
case AARUREMOTE_SCSI_DIRECTION_INOUT:
flags = CAM_DIR_BOTH;
break;
} }
if(!ctx) return -1; if(!ctx) return -1;
@@ -88,8 +80,7 @@ int32_t SendScsiCommand(void* device_ctx,
camccb->csio.cdb_len = cdb_len; camccb->csio.cdb_len = cdb_len;
camccb->csio.tag_action = 0x20; camccb->csio.tag_action = 0x20;
if(cdb_len <= CAM_MAX_CDBLEN) if(cdb_len <= CAM_MAX_CDBLEN) memcpy(camccb->csio.cdb_io.cdb_bytes, cdb, cdb_len);
memcpy(camccb->csio.cdb_io.cdb_bytes, cdb, cdb_len);
else else
{ {
camccb->csio.cdb_io.cdb_ptr = (u_int8_t*)cdb; camccb->csio.cdb_io.cdb_ptr = (u_int8_t*)cdb;
@@ -102,8 +93,7 @@ int32_t SendScsiCommand(void* device_ctx,
error = cam_send_ccb(ctx->device, camccb); error = cam_send_ccb(ctx->device, camccb);
if(!clock_error) if(!clock_error) clock_error = clock_gettime(CLOCK_REALTIME_PRECISE, &end_tp);
clock_error = clock_gettime(CLOCK_REALTIME_PRECISE, &end_tp);
if(!clock_error) if(!clock_error)
{ {
@@ -115,8 +105,7 @@ int32_t SendScsiCommand(void* device_ctx,
*duration = (uint32_t)(end - start); *duration = (uint32_t)(end - start);
} }
if(error < 0) if(error < 0) error = errno;
error = errno;
if((camccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP && if((camccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP &&
(camccb->ccb_h.status & CAM_STATUS_MASK) != CAM_SCSI_STATUS_ERROR) (camccb->ccb_h.status & CAM_STATUS_MASK) != CAM_SCSI_STATUS_ERROR)
@@ -137,7 +126,9 @@ int32_t SendScsiCommand(void* device_ctx,
*sense = (camccb->ccb_h.status & CAM_STATUS_MASK) == CAM_SCSI_STATUS_ERROR; *sense = (camccb->ccb_h.status & CAM_STATUS_MASK) == CAM_SCSI_STATUS_ERROR;
*sense_buffer = malloc(camccb->csio.sense_len - camccb->csio.sense_resid); *sense_buffer = malloc(camccb->csio.sense_len - camccb->csio.sense_resid);
(*sense_buffer)[0] = camccb->csio.sense_data.error_code; (*sense_buffer)[0] = camccb->csio.sense_data.error_code;
memcpy((*sense_buffer)+1, camccb->csio.sense_data.sense_buf, (camccb->csio.sense_len - camccb->csio.sense_resid) - 1); memcpy((*sense_buffer) + 1,
camccb->csio.sense_data.sense_buf,
(camccb->csio.sense_len - camccb->csio.sense_resid) - 1);
} }
cam_freeccb(camccb); cam_freeccb(camccb);