summaryrefslogtreecommitdiffstats
path: root/src/hardware.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/hardware.c')
-rwxr-xr-xsrc/hardware.c58
1 files changed, 31 insertions, 27 deletions
diff --git a/src/hardware.c b/src/hardware.c
index 282dc77..651e666 100755
--- a/src/hardware.c
+++ b/src/hardware.c
@@ -441,33 +441,35 @@ static int hw_strncmp (const char *p_str1, const char *p_str2, const int len)
** Returns Returns char* (bluetooth type)
**
*******************************************************************************/
-static char *hw_samsung_bluetooth_type()
+static const char *hw_samsung_bluetooth_type()
{
char buf[10];
- int fd = open(CID_PATH, O_RDONLY);
+ int fd;
+ ssize_t nread;
+
+ fd = open(CID_PATH, O_RDONLY);
if (fd < 0) {
ALOGE("Couldn't open file %s for reading", CID_PATH);
return NULL;
}
- if (read(fd, buf, sizeof(buf)) < 0) {
- close(fd);
+ nread = read(fd, buf, sizeof(buf));
+ close(fd);
+ if (nread <= 0) {
return NULL;
}
- close(fd);
-
if (strncmp(buf, "murata", 6) == 0)
- return "_murata";
+ return "murata";
if (strncmp(buf, "semcove", 7) == 0)
- return "_semcove";
+ return "semcove";
if (strncmp(buf, "semcosh", 7) == 0)
- return "_semcosh";
+ return "semcosh";
if (strncmp(buf, "wisol", 5) == 0)
- return "_wisol";
+ return "wisol";
return NULL;
}
@@ -518,26 +520,28 @@ static uint8_t hw_config_findpatch(char *p_chip_id_str)
while ((dp = readdir(dirp)) != NULL)
{
/* Check if filename starts with chip-id name */
-#ifdef SAMSUNG_BLUETOOTH
- char *type = hw_samsung_bluetooth_type();
- char samsung_patchfile_name[FW_PATCHFILE_PATH_MAXLEN] = { 0 };
- memset(samsung_patchfile_name, 0, FW_PATCHFILE_PATH_MAXLEN);
- strcpy(samsung_patchfile_name, p_chip_id_str);
- if (type != NULL)
- {
- strcat(samsung_patchfile_name, type);
- }
+ int cmp;
- if ((hw_strncmp(dp->d_name, samsung_patchfile_name,
- strlen(samsung_patchfile_name))) == 0)
- {
- memset(p_chip_id_str, 0, FW_PATCHFILE_PATH_MAXLEN);
- strcpy(p_chip_id_str, samsung_patchfile_name);
-#else
- if ((hw_strncmp(dp->d_name, p_chip_id_str, strlen(p_chip_id_str)) \
- ) == 0)
+ cmp = hw_strncmp(dp->d_name, p_chip_id_str, strlen(p_chip_id_str));
+ if (cmp == 0)
{
+#ifdef SAMSUNG_BLUETOOTH
+ const char *type = hw_samsung_bluetooth_type();
+
+ if (type != NULL) {
+ const char *needle;
+
+ BTHWDBG("Looking for Samsung %s patchfile flavour in %s",
+ type,
+ dp->d_name);
+
+ needle = strstr(dp->d_name, type);
+ if (needle == NULL) {
+ continue;
+ }
+ }
#endif
+
/* Check if it has .hcd extenstion */
filenamelen = strlen(dp->d_name);
if ((filenamelen >= FW_PATCHFILE_EXTENSION_LEN) &&